Queue Implementations

Queue实现分为通用实现和并发实现。

通用队列实现

如上一节所述,LinkedList实现Queueinterface,为addpoll等提供先进先出(FIFO)队列操作。

PriorityQueue类是基于* heap *数据结构的优先级队列。此队列根据构造时指定的 Sequences 对元素进行排序,这些 Sequences 可以是元素的自然 Sequences,也可以是显式Comparator施加的 Sequences。

队列检索操作pollremovepeekelement-访问队列开头的元素。就指定的 Sequences 而言,“队列头”是最小的元素。如果多个元素的价值最小,那么 head 是这些元素之一;联系被任意 break。

PriorityQueue及其迭代器实现CollectionIteratorinterface的所有可选方法。不能保证方法iterator中提供的迭代器以任何特定 Sequences 遍历PriorityQueue的元素。对于有序遍历,请考虑使用Arrays.sort(pq.toArray())

并发队列实现

java.util.concurrent软件包包含一组同步的Queueinterface和类。 BlockingQueue扩展了Queue的操作,这些操作 await 检索元素时队列变为非空,并 await 存储元素时队列中的空间变为可用。该interface由以下类实现:

在 JDK 7 中,TransferQueue是专用的BlockingQueue,其中将元素添加到队列中的代码可以选择 await(阻塞)另一个线程中的代码以检索该元素。 TransferQueue有一个实现: