第七部分 阻塞队列

原创 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

运行结果:

JAVA中的阻塞队列

一.什么是阻塞队列?阻塞队列是一个在队列基础上又支持了两个附加操作的队列。2个附加操作: 支持阻塞的插入方法:队列满时,队列会阻塞插入元素的线程,直到队列不满。 支持阻塞的移除方法:队列空时,获取元素...
  • qq_16811963
  • qq_16811963
  • 2016年08月13日 00:03
  • 1992

阻塞队列与非阻塞队列区别应用场景

转载自:http://blog.csdn.net/u012881904/article/details/51491736 作者:小汪 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中...
  • tingting256
  • tingting256
  • 2016年09月09日 16:47
  • 5525

java 中 阻塞队列 非阻塞队列 和普通队列的区别是什么?

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列...
  • u012881904
  • u012881904
  • 2016年05月24日 16:58
  • 5732

并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究

一、 前言 常用的并发队列有阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好,下面就看看常用的非阻塞ConcurrentLinkedQueue是...
  • andyzhaojianhui
  • andyzhaojianhui
  • 2017年07月20日 01:00
  • 312

Java阻塞队列的实现 (简洁明了)

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2016年05月13日 21:51
  • 966

用redis阻塞队列,实现消息传递

在网络服务器运行的时候,可能会碰到这样的需求,主程序处理会很耗时,            1,网络流量很大,但有紧急情况需要发送邮件通知别人,这时如果在程序中发送邮件,将会很费时,但又必须做     ...
  • Hello_ok_google
  • Hello_ok_google
  • 2013年11月26日 21:05
  • 11312

阻塞队列使用方式详解

阻塞队列 方法\处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e,time,u...
  • liyantianmin
  • liyantianmin
  • 2016年06月15日 15:16
  • 1562

Java同步队列(非阻塞队列与阻塞队列)——java并发容器

java同步队列,包括非阻塞队列与阻塞队列
  • sunxianghuang
  • sunxianghuang
  • 2016年07月27日 18:36
  • 4965

并发理解(阻塞队列)

并发理解(阻塞队列)
  • zhaozhenzuo
  • zhaozhenzuo
  • 2014年07月04日 08:36
  • 6682

阻塞队列详解

阻塞队列详解
  • Jarvan_Song
  • Jarvan_Song
  • 2016年08月16日 11:22
  • 762
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第七部分 阻塞队列
举报原因:
原因补充:

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