`

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 2 入门与实例教程pdf

    Java 2 入门与实例教程pdf,

    220个JAVA初学者实例

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

    JAVA教程,java 2 入门与实例教程,高手入门到精通

    "JAVA教程,java 2 入门与实例教程,高手入门到精通"这个主题覆盖了从基础到高级的完整Java学习路径,特别适合对Java 2平台感兴趣的学习者。Java 2,也称为Java SE(标准版),是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入门实例代码及学习笔记

    【JAVA入门实例代码及学习笔记】是一份针对初学者精心准备的资料,涵盖了JAVA语言的基础到进阶的各种重要概念和实战技巧。这份资料通过实际的代码示例和详细的学习笔记,帮助初学者深入理解JAVA编程。 1. **面向...

    Java入门实例源代码_1

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

    elasticsearch java客户端Jest入门实例

    本实例参考网上代码:http://www.ibm.com/developerworks/cn/java/j-javadev2-24/ 通过Jest和Junit单元测试的方法创建索引和检索 第一步:启动一个elasticsearch服务,bin目录下的elasticsearch.bat 第二步:建索引,...

    java入门实例代码

    "Java入门实例代码"是针对初学者设计的一系列教程,旨在帮助新手快速掌握Java SE(Java Standard Edition)的基础知识。Java SE是Java的核心部分,包含了开发桌面应用、网络应用和移动应用所需的所有工具和API。 在...

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

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

    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...

    Java入门实验实例(程序代码加实验报告全)

    "Java入门实验实例(程序代码加实验报告全)"是一份非常实用的学习资源,旨在帮助初学者快速掌握Java编程基础。这份资料包含了作者在学习Java过程中编写的全部程序和对应的实验报告,对于刚接触Java的人来说,是非常...

Global site tag (gtag.js) - Google Analytics