阻塞队列BlockingQueue_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 阻塞队列BlockingQueue

阻塞队列BlockingQueue

 2018/3/28 0:47:34  chen.zhu  程序员俱乐部  我要评论(0)
  • 摘要:阻塞队列BlockingQueue转载自:https://www.jianshu.com/p/f2791bbaf348阻塞队列(BlockingQueue)的概念:当队列中为空时,从队列中获取元素的操作将被阻塞,当队列满时,向队列中添加元素的操作将被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其它的线程往队列中插入新的元素。同样,试图往满的队列中添加新元素的线程也会被阻塞,直到有其他的线程使队列重新变的空闲起来。(类似于生产者和消费者模式)注:主要针对多线程并发时存在。java
  • 标签:队列
阻塞队列BlockingQueue
转载自:https://www.jianshu.com/p/f2791bbaf348

阻塞队列(BlockingQueue)的概念:
        当队列中为空时,从队列中获取元素的操作将被阻塞,当队列满时,向队列中添加元素的操作将被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其它的线程往队列中插入新的元素。同样,试图往满的队列中添加新元素的线程也会被阻塞,直到有其他的线程使队列重新变的空闲起来。(类似于生产者和消费者模式)
注:主要针对多线程并发时存在。

java.util.concurrent包下BlockingQueue的实现类:
1:ArrayBlockingQueue:一个由数组结构组成的有界队列。此队列按照先进先出的顺序进行排序。支持公平锁和非公平锁。
2:LinkedBlockingQueue:一个由链表(单向链表)结构组成的有界队列,此队列的长度为Integer.MAX_VALUE。此队列按照先进先出的顺序进行排序。
3:PriorityBlockingQueue:一个支持线程优先级排序的无界队列,默认自然序进行排序,也可以自定义实现compareTo()方法来指定元素排序规则,不能保证同优先级元素的顺序。
4:DelayQueue:一个实现PriorityBlockingQueue实现延迟获取的无界队列,在创建元素时,可以指定多久才能从队列中获取当前元素。只有延时期满后才能从队列中获取元素。
5:SynchronousQueue:一个不存储元素的阻塞队列,每一个put操作必须等待take操作,否则不能添加元素。支持公平锁和非公平锁。(元素不会存储的队列,相当于没有中间商)
6:LinkedBlockingDeque: 一个由链表结构组成的双向阻塞队列(双向链表)。队列头部和尾部都可以添加和移除元素,多线程并发时,可以将锁的竞争最多降到一半。
上一篇: 杂项(曾经的笔记本) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名