在JDK7中,有7中阻塞队列
ArrayBlockingQueue | 一个由数组组成的有界阻塞队列 |
LinkedBlockingQueue | 一个由链表结构组成的队列 |
PriorityBlockingQueue | 一个支持优先级排序的无界阻塞队列 |
DelayQueue | 一个使用优先级队列实现的无界阻塞队列 |
SynchronousQueue | 一个不存储元素的阻塞队列 |
LinkedTransferQueue | 一个由链表结构组成的无界阻塞队列 |
LinkedBlockingDeque | 一个由链表结构组成的双向阻塞队列 |
1.首先介绍一个接口
BlockingQueue<E>
所有已知实现类:ArrayBlockingQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue
BlockingQueue增加了两个操作:获取元素时,可以等待队列变为非空。插入元素时,可以等待队列变成非满。
对于这两个操作,对应了四种实现形式:
操作 | 抛出异常 | 特殊值 | 阻塞 | 超时 |
插入 | add(E) | offer(E) | put(E) | offer(E,time,unit) |
移除 | remove() | poll() | take() | poll(time,unit) |
检查 | element() | peek() | 不可用 | 不可用 |
实现BlockQueue的阻塞队列不能插入null,元素,否则会抛出NullPointerException异常。