阻塞队列(1.0)
阻塞队列
概述
- 什么是阻塞队列?
- 阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如图所示
- 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞,当阻塞队列是满时,往队列中添加元素的操作将会被阻塞
为什么用?有什么好处?
好处是我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为 BlockingQueue 都一手给你包办好了
在 concurrent 包发布以前,在多线程环境下,我们每个程序员都必须自己去控制这些细节,尤其还要兼顾效率和线程安全,而这会给我们的程序带来不小的复杂度.
阻塞队列种类
阻塞队列种类
- ArrayBlockingQueue: 由数组结构组成的有界阻塞队列
- LinkedBlockingQueue: 由链表结构组成的有界(但大小默认值 Integer>MAX.VALUE)阻塞队列.
- SynchronousQueue:不存储元素的阻塞队列,也即是单个元素的队列.
- SynchronousQueue没有容量,与其他BlcokingQueue不同,SynchronousQueue 是一个不存储元素的BlcokingQueue
- 每个put操作必须要等待一个take操作,否则不能继续添加元素,反之亦然
- PriorityBlockingQueue : 支持优先级排序的无界阻塞队列.
- LinkedTransferQueue : 由链表结构组成的无界阻塞队列.
- LinkedBlockingDeque : 由链表结构组成的双向阻塞队列.
BlockingQueue的核心方法
1 | package tech.chen.juccode.a04; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TimeSnapshot!
评论