阻塞佇列是乙個佇列。當佇列是空的,從佇列中獲取元素的操作將會被阻塞;當佇列是滿的。從佇列中新增元素的操作將會阻塞。
在多執行緒領域:所謂阻塞,在某些情況下會掛起執行緒(即阻塞),一旦條件滿足,被掛起的執行緒又會自動被喚起。
好處是我們不需要關心什麼時候需要阻塞執行緒,什麼時候需要喚醒執行緒,因為這一切blockingqueue都給一手包辦了。
在concurrent包發布以前,在多執行緒環境下,我們必須自己控制這些細節,尤其還要兼顧效率和執行緒安全,而這會給我們的程式帶來不小的複雜度。
方法型別
丟擲異常
特殊值阻塞
超時插入
add(e)
offer(e)
put(e)
offer(e,time,unit)
移除remove()
poll()
take
poll(e,time,unit)
檢查element(e)
peek()
不可用不可用
特殊值
一直阻塞
超時退出
public class blockingqueuedemo
}
JUC學習 阻塞佇列
在這篇部落格中我們接觸的佇列都是非阻塞佇列,比如priorityqueue linkedlist linkedlist是雙向鍊錶,它實現了dequeue介面 阻塞佇列常用於執行緒池和生產者消費者的問題中 使用非阻塞佇列的時候有乙個很大問題就是 它不會對當前執行緒產生阻塞,那麼在面對類似消費者 生產者...
JUC 阻塞佇列
什麼是阻塞佇列 阻塞佇列常用於生產者和消費者場景,生產者是向佇列裡新增元素的執行緒,消費者是從佇列裡獲取元素的執行緒。阻塞佇列就是生產者用來存放元素 消費者用來獲取元素的容器 為什麼要使用阻塞佇列 就是適用在不得不阻塞的場景如上面所說生產者 和 消費者場景中 要是佇列中為空 消費者不得不進行阻塞 佇...
juc 阻塞佇列BlockingQueue
阻塞佇列blockingqueue的方法分類 方法型別 丟擲異常 特殊值阻塞 超時插入 add e offer e put e offer e,time,unit 移除remove poll take poll time,unit 檢查element peek 不可用不可用 丟擲異常 當阻塞佇列滿時...