1. 程式人生 > 實用技巧 >Queue(佇列)介面

Queue(佇列)介面

Queue(佇列)介面

表示Collection的子介面,表示佇列FIFO(First In First Out)先進先出

常用方法:

​ 丟擲異常:

​ boolean add(E e) - 順序新增一個元素(到達上限後,再新增則會丟擲異常 )

​ E remove() - 獲得第一個元素並移除(如果佇列沒有元素時,則丟擲異常)

​ E element() - 獲得第一個元素但不移除(如果佇列沒有元素時,則丟擲異常)

​ 返回特殊值:推薦使用

​ boolean offer(E e) - 順序新增一個元素(到達上限後,再新增則會返回false)

​ E pool() - 獲得第一個元素並移除

(如果佇列沒有元素時,則返回null)

​ E peek() - 獲得第一個元素但不移除(如果佇列沒有元素時,則返回null)

ConcurrentLinkedQueue

執行緒安全、可高效讀寫的佇列,高併發下效能最好的佇列。

無鎖、CAS比較交換演算法,修改的方法包含三個核心引數(V,E,N)

​ V:要更新的變數、 E:預期值、 N:新值

Queue<String> queue = new ConcurrentLinkedQueue<String>();
queue.offer("Hello");	//插入
queue.offer("World");	//插入
queue.poll();	//刪除Hello
queue.peek();	//獲得World

BlockingQueue介面(阻塞佇列)

Queue的子介面,阻塞佇列,增加了兩個執行緒狀態為無限期等待的方法。

方法:

void put(E e) - 將指定元素插入此佇列中,如果沒有可用空間,則等待

E take() - 獲取並移除此佇列頭部元素,如果沒有可用元素,則等待。

ArrayBlockingQueue:

陣列結構實現,有界佇列

沒寫完,抽空給補上