Queue
實現分爲通用實現和併發實現。html
如上一節所述,LinkedList
實現了Queue
接口,爲add
、poll
等提供了先進先出(FIFO)隊列操做。java
PriorityQueue類是基於堆數據結構的優先級隊列,此隊列根據構造時指定的順序對元素進行排序,這些順序能夠是元素的天然順序,也能夠是顯式Comparator
施加的順序。segmentfault
隊列檢索操做 — poll
、remove
、peek
、element
訪問隊列開頭的元素,就指定的順序而言,隊列的頭是最小的元素,若是多個元素的值最小,那麼頭是這些元素之一;關係被任意打破。api
PriorityQueue
及其迭代器實現Collection
和Iterator
接口的全部可選方法,不保證方法iterator
中提供的迭代器以任何特定順序遍歷PriorityQueue
的元素,對於有序遍歷,請考慮使用Arrays.sort(pq.toArray())
。數組
java.util.concurrent
包包含一組同步的Queue
接口和類,BlockingQueue擴展了Queue
的操做,這些操做在檢索元素時等待隊列變爲非空,在存儲元素時等待隊列中的空間變爲可用,該接口由如下類實現:數據結構
BlockingQueue
接口。在JDK 7中,TransferQueue是專門的BlockingQueue
,其中將元素添加到隊列中的代碼能夠選擇等待(阻塞)另外一個線程中的代碼來檢索該元素,TransferQueue
有一個實現:併發
TransferQueue
。