1>. 阻塞佇列概述
好處是我們不需要關心什麼時候需要阻塞執行緒,什麼時候需要喚醒執行緒,因為blockingqueue都一手給你包辦好了
在concurrent包發布以前,在多執行緒環境下,我們每個程式設計師都必須自己去控制這些細節,尤其還要兼顧效率和執行緒安全,而這會給我們的程式帶來不小的複雜度.
2>.阻塞佇列種類
synchronousqueue沒有容量,與其他blcokingqueue不同,synchronousqueue是乙個不儲存元素的blcokingqueue
每個put操作必須要等待乙個take操作,否則不能繼續新增元素,反之亦然
public
class
synchronousqueuedemo
catch
(interruptedexception e)},
"aaa").
start()
;new
thread((
)->
catch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+"\t"
+ blockingqueue.
take()
);trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+"\t"
+ blockingqueue.
take()
);trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+"\t"
+ blockingqueue.
take()
);}catch
(interruptedexception e)},
"bbb").
start();}}
3>.blockingqueue的核心方法
JUC 阻塞佇列
什麼是阻塞佇列 阻塞佇列常用於生產者和消費者場景,生產者是向佇列裡新增元素的執行緒,消費者是從佇列裡獲取元素的執行緒。阻塞佇列就是生產者用來存放元素 消費者用來獲取元素的容器 為什麼要使用阻塞佇列 就是適用在不得不阻塞的場景如上面所說生產者 和 消費者場景中 要是佇列中為空 消費者不得不進行阻塞 佇...
JUC 04 鎖的8個問題
鎖的8個問題目標就是分析鎖是誰,以及執行緒操作資源類的流程分析。兩個執行緒分別操作同乙個資源類物件的兩個同步方法。資源類 class person public synchronized void drink 執行緒操作資源類 public class question a執行緒 start tim...
juc 阻塞佇列BlockingQueue
阻塞佇列blockingqueue的方法分類 方法型別 丟擲異常 特殊值阻塞 超時插入 add e offer e put e offer e,time,unit 移除remove poll take poll time,unit 檢查element peek 不可用不可用 丟擲異常 當阻塞佇列滿時...