Queue(佇列)介面
阿新 • • 發佈:2020-07-20
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:
陣列結構實現,有界佇列
沒寫完,抽空給補上