Juc04 阻塞佇列

2021-10-25 02:20:26 字數 1508 閱讀 1299

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 不可用不可用 丟擲異常 當阻塞佇列滿時...