Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
Queue
实现分为通用和并发实现。
如前一节所述,LinkedList
实现 Queue
接口,为 add
poll
等提供先进先出(FIFO)队列操作。
PriorityQueue
类是基于 heap (堆) 数据结构的优先级队列。此队列根据构造时指定的顺序对元素进行排序,这可以是元素的自然顺序或由显式 Comparator
强加的排序。
队列获取操作 poll
,remove
,peek
和 element
访问队列头部的元素。队列的头 是关于指定排序的最小元素。如果多个元素被绑定为最小值,则头部是这些元素之一;关系被任意打破。
PriorityQueue
及其迭代器实现 Collection
和 Iterator
接口的所有可选方法。方法 iterator
中提供的迭代器不保证以任何特定顺序遍历 PriorityQueue
的元素。对于有序遍历,请考虑使用 Arrays.sort(pq.toArray())
。
java.util.concurrent
包中包含一组同步的 Queue
接口和类。BlockingQueue
继承 Queue
,其操作在获取元素时等待队列变为非空,并且在存储元素时等待队列的空间可用。此接口由以下类实现:
LinkedBlockingQueue
由链接节点支持的可选有界 FIFO 阻塞队列ArrayBlockingQueue
由数组支持的有界 FIFO 阻塞队列PriorityBlockingQueue
由堆支持的无界阻塞优先级队列DelayQueue
由堆支持的基于时间的调度队列SynchronousQueue
一个简单的集合点机制,它使用 BlockingQueue
接口在 JDK 7 中,TransferQueue
是一个专用的 BlockingQueue
,其中向队列添加元素的代码可以选择等待(阻塞)代码在另一个线程中获取元素。TransferQueue
只有一个实现:
LinkedTransferQueue
基于链接节点的无界 TransferQueue