JUC學習筆記 阻塞佇列

2021-10-24 08:51:08 字數 612 閱讀 8316

阻塞佇列是乙個佇列。當佇列是空的,從佇列中獲取元素的操作將會被阻塞;當佇列是滿的。從佇列中新增元素的操作將會阻塞。

在多執行緒領域:所謂阻塞,在某些情況下會掛起執行緒(即阻塞),一旦條件滿足,被掛起的執行緒又會自動被喚起。

好處是我們不需要關心什麼時候需要阻塞執行緒,什麼時候需要喚醒執行緒,因為這一切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 不可用不可用 丟擲異常 當阻塞佇列滿時...