`

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实例教程,入门教程(代码)

    Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)Java实例教程,入门教程(代码)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入门实例源代码_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语言的书籍。通过一系列的经典实例,本书旨在以直观、易懂的方式引领读者掌握Java的核心概念和技术...

    Java SE编程入门教程 java序列化(共14页).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 2 入门与实例教程(PDG).rar

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

    优质课件 java基础入门必学 Java SE编程入门教程 全套PPT课件 共30个文件 含辅助资料.rar

    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 MATLAB Builder For Java入门实例讲解

    MATLAB Builder For 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中,每...

Global site tag (gtag.js) - Google Analytics