1. 简介
阻塞队列顾名思义本质上是一个先进先出的队列,不过阻塞队列是一个并发的容器,是线程安全的,并且在提供常用的队列获取方法之外还提供了阻塞与超时方法。
2. 实现
Queue接口
现在来回顾一下队列接口Queue
,如下所示:
1 | public interface Queue<E> extends Collection<E> { |
BlockingQueue接口
而BlockingQueue
接口则在Queue
的基础上增加了阻塞方法和超时方法:
1 | public interface BlockingQueue<E> extends Queue<E> { |
BlockingQueue的实现类
如上图所示,阻塞队列有7个实现:
ArrayBlockingQueue
:一个由数组实现的有界阻塞队列。LinkedBlockingQueue
:一个由链表实现的有界阻塞队列。PriorityBlockingQueue
:一个支持优先级排序的无界阻塞队列。DelayQueue
:一个由优先级队列实现的无界延时阻塞队列。SynchronousQueue
:同步队列,一个不存储元素的阻塞队列。LinkedTransferQueue
:一个由链表实现的无界阻塞队列,具有transfer相关方法。LinkedBlockingDeque
:一个由链表实现的双端阻塞队列。