第七部分 阻塞队列

原创 2011年01月20日 10:35:00

阻塞队列

在应用开发领域,生产者——消费者模式代表了一种异步的通信模式,基于这种模式发展出来的消息传递机制更上一种应用架构模式。基于消息传递机制的应用系统,既可能是传统的Clinet/Servier架构,也可能打破这种格局,而形成P2P架构。

 队列(Queue)因为其"先进先出(FIFO)"的特点,成为经常应用于生产者-消费者模式的数据结构。在Java中java.uril.Queue接口定义的便是队列这一数据结构,而并发工具包中的java.util.concurrent.BlockingQueue接口定义了一种阻塞性,线程安全的队列。java.util.concurrent.LinkedBlockingQueue是其实现类。BlockingQueue队列的开发人员,将自动享有以下的便利。

将一个对象放到队列尾部,如果队列已满,就等待直到有空闲节点。

从队列头部取一个对象,如果没有对象,就等待直到有可取的对象。

在存取队列的过程中,锁定队列对象,不允许其他线程访问队列。

BlockingQueue定义的主要方法如下:

 void put(Object object):将object对象放在队列尾部。如果有必要,将等待可用的空间。

Object take();从队列头部取出一个对象并返回该对象。

前面已经基于并发工具包连续开发了几个线程池,有人可能就会产生错觉:并发工具包中的工具类只能运行在线程池中。为了推翻这一错觉,下面用于演示BlockingQueue队列的例程TestBlockingWithThread将不使用线程池,而是显式地创建一个写入队列的线程,两个读取队列的线程。

代码如下【TestBlockingQueueWithThread

运行结果:

相关文章推荐

[操作系统概念]第七部分——文件与目录

目录 这部分总结的比较简略 * 文件包含文件本身和文件相关的信息。 * 不同类型文件的开头几个字节有特定的次序,用于表示该文件是什么类型,需要如何操作。 * 对文件的组织管理需要...
  • lqadam
  • lqadam
  • 2017年02月24日 22:08
  • 205

斯坦福大学IOS开发课程笔记(第七课第二部分)

本篇是demo演示,程序其实就是上节课的心理学家那个demo, 不过在这个demo的基础上,把它作成一个通用版,可以自动识别当前运行的设备是iphone还是ipad,然后有不同的显示效果。所以,还是打...

《初入linux》--第七部分-文件本地管理和远程管理

一.本地包管理 在管理文件时,往往把大量同类型文件打包或压缩,文件归档后方便储存于传输,归档,即把多个文件归为一个 GZIP最早由Jean-loup Gailly和Mark Adler创建,用于U...

Java面试题集(第七部分)(151-180)

摘要:这部分包含了spring、Spring MVC以及Spring和其他框架整合以及测试相关的内容,除此之外还包含了大型网站技术架构相关面试内容。 151. Spring中的BeanFactory和...

【C语言探索之旅】 第二部分第七课:文件读写

我们学过了这么多变量的知识,就知道变量实在是很强大的,可以帮助我们实现很多事情。 变量固然强大,还是有缺陷的,最大的缺陷就是:不能永久保存。 因为C语言的变量储存在内存中,在你的程序退出时就被清除...

【C语言探索之旅】 第一部分第七课:循环语句

上一课【条件表达式】很重要,这一课我们一起来学习同样很重要的【循环语句】...

第七部分 线程间通信

 线程间通信我们所掌握的线程通信手段还只限于主线程通过唤醒,中断机制向子线程发出信号,或者在通过创建子线程时候向构造方法传入数据,以及设置子线程的公有属性。但是仅凭这些事难以胜任要求的。 在多线程开发...
  • cuiran
  • cuiran
  • 2011年01月17日 14:00
  • 2079

如何使用kobold2d来做一个简单的iphone游戏教程(第七部分)

免责声明:本系列教程是根据该系列教程实践过程所作的自己使用kobold2D框架经历。仅供学习与交流使用,请勿进行商业传播,转载时不要移除本声明。如果产生任何纠纷均与博客所有者无关。欢迎转载。 作...

JSF2自定义组件编程系列 第七部分

JSF Customized Composite Component,校验,日志以及debug信息

Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3

Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第七部分 阻塞队列
举报原因:
原因补充:

(最多只允许输入30个字)