`

Java7 TransferQueue入门实例

阅读更多

转自:http://www.xiaoyaochong.net/wordpress/?p=354

TransferQueue是Java7新加入的一种线程安全的队列,实现了BockingQueue,也就时说这是一个特殊的阻塞队列。TransferQueue目前只有一个实现----LinkedTransferQueue,这是列表结构,意味着它是无边界的Queue。

 

一般的队列在未满的情况下往队列中存放元素是不会发生阻塞的,而一般的LinkedBlockingQueue又是一个无边界队列,所以在存放元素不会发生阻塞。为了满足无边界队列存放元素的阻塞需求,TransferQueue就应运而生,在调用tranfer(...)方法存放元素时将发生阻塞,知道有外界要消费tranfer(...)所存放的元素,也就是说如果tranfer(...)的元素之前还有别的元素,那tranfer(...)依旧会阻塞,知道它被消费为止。

 

实例如下:

@Test
    public void testTansferQueue() throws InterruptedException {
        final TransferQueue<String> transferQueue = new LinkedTransferQueue<String>();
        
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.execute(new Runnable() {
            public void run() {
                try {
                    // 此处阻塞,等待take(),poll()的发生。
                    transferQueue.transfer("test");
                    System.out.println("子线程完成传递.");
                } catch (InterruptedException e) {}
            }
        });
        
        // 此处阻塞,等待trankser(当然可以是别的插入元素的方法)的发生
        String test = transferQueue.take();
        System.out.printf("主线程完成获取 %s.\n", test);
        Thread.sleep(1000);
        
    }

 

输入结果
主线程完成获取 test.
子线程完成传递.

 

 

分享到:
评论

相关推荐

    java入门实例 java入门实例

    【Java 入门实例:classpath 和 package 详解】 学习Java对于初学者来说,尤其是在尝试编译和运行简单程序时,可能会遇到很多困扰。错误信息往往令人困惑,导致一些初学者失去学习信心。实际上,很多问题源于对...

    JAVA简单入门实例

    "JAVA简单入门实例"这个压缩包提供了一百八十个小案例,旨在帮助新手快速掌握Java的基本语法和编程技巧。 1. **Java基本语法**: 这些实例将涵盖Java的基础语法,包括变量声明、数据类型(如整型、浮点型、字符型、...

    java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java

    java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象...

    Java 2 入门与实例教程pdf

    Java 2 入门与实例教程pdf,

    Java 2 入门与实例教程.rar

    Java 2 入门与实例教程是一套针对初学者精心设计的编程学习资源,主要涵盖了Java语言的基础概念、语法和实战应用。这份教程旨在帮助读者快速掌握Java编程技能,为今后深入学习和开发实践奠定坚实基础。以下是本教程...

    Java 2入门与实例教程(光盘源代码)

    《Java 2入门与实例教程》是一本专为初学者设计的编程指南,由孙燕主编,由中国铁道出版社出版。这本书旨在帮助读者快速掌握Java 2编程语言的基础知识,并通过丰富的实例加深理解和应用。书中的源代码是学习过程中的...

    Java实例教程,入门教程(代码)

    Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门...

    220个JAVA初学者实例

    以上只是Java初学者实例中可能涉及的部分关键知识点,通过220个实例的实践,你可以逐步建立起扎实的Java基础,为后续深入学习和项目开发打下坚实的基础。不断地练习和巩固这些知识,将有助于你成长为一名合格的Java...

    java源码 java ee基础入门实例 2018127

    本教程基于2018年的版本,旨在帮助初学者入门Java EE的基础知识,通过实例学习来加深理解。 1. **Java源码**: Java源码是程序设计的基础,它是由程序员编写的用Java语言书写的代码。在Java EE环境中,源码通常...

    java rest api入门实例

    REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,...

    Java 2 入门与实例教程

    Java 2 入门与实例教程是一本专为初学者设计的编程教材,主要涵盖了Java 2平台的基础知识和实际应用。PDG格式通常用于电子书籍,提供了方便的阅读体验。通过这本书,读者将深入理解Java语言的核心概念,并通过丰富的...

    Java入门实例源代码_1

    7. **实例7**:可能会介绍继承(Inheritance),它是面向对象编程的三大特性之一。通过继承,子类可以扩展父类的功能,实现代码的复用。 8. **实例8**:可能涉及接口(Interface)的使用,接口是另一种形式的多态性...

    从入门到精通 java编程经典实例

    【标题】"从入门到精通 Java编程经典实例"是一本旨在帮助编程初学者及有一定面向对象编程基础的爱好者深入理解Java语言的书籍。通过一系列的经典实例,本书旨在以直观、易懂的方式引领读者掌握Java的核心概念和技术...

    Java 2 入门与实例教程(PDG).rar

    《Java 2 入门与实例教程》是一本专为初学者设计的编程指南,旨在帮助读者快速掌握Java语言的基础知识和技术。这本书以其丰富的实例和深入浅出的讲解方式,深受学习者喜爱。在深入探讨Java 2平台的各个方面时,它...

    java入门实例

    "Java入门实例"旨在帮助新手快速理解并实践Java编程。 1. **环境搭建**: 在学习Java前,你需要先安装Java Development Kit (JDK),它包含了编译Java程序所需的工具。设置好环境变量`JAVA_HOME`,`PATH`和`...

    Java SE编程入门教程 java instanceof(共3页).pptx

    Java SE编程入门教程 collection与collections(共7页).pptx Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE...

    JAVA编程实例入门

    Java编程实例入门是针对初学者的一本优秀教材,它涵盖了JAVA语言的基础知识,包括如何创建、编译和运行简单的JAVA程序。以下将详细介绍这些基础知识。 首先,基础的JAVA实例从"Hello World!"程序开始。在Java中,每...

    Java入门到精髓实例版PPT

    这份"Java入门到精髓实例版PPT"涵盖了从基础到高级的Java编程知识,旨在帮助初学者快速掌握Java的核心概念和实战技巧。 第1章通常会介绍Java的历史和特点,包括其与C++的区别,以及为何选择Java作为编程语言。Java...

Global site tag (gtag.js) - Google Analytics