JUC 多執行緒(2 執行緒間的通訊)學習筆記

2021-10-09 04:37:20 字數 3104 閱讀 3943

3. 多執行緒模板(3)

4. 執行緒通訊中 synchronized 與 lock

5. 執行緒間定製化呼叫通訊(精準喚醒)

生產者 + 消費者

通知等待喚醒機制

1. 判斷(判斷有無產品)

2. 幹活(如果沒有產品,則先生成 ; 如果已有產品,則先消費)

3. 通知(通知對方我已經幹完了,該你了)

public

class

juc02_communication

catch

(interruptedexception e)}}

,"thread_a").

start()

;new

thread((

)->

catch

(interruptedexception e)}}

,"thread_b").

start()

;}}class

num 幹活

number++

; system.out.

println

(thread.

currentthread()

.getname()

+"\t"

+number)

; 通知(喚醒)

this

.notifyall()

;}public

synchronized

void

decrement()

throws interruptedexception

幹活number--

; system.out.

println

(thread.

currentthread()

.getname()

+"\t"

+number)

; 通知(喚醒)

this

.notifyall()

;}}

class

num 幹活

number++

; system.out.

println

(thread.

currentthread()

.getname()

+"\t"

+number)

; 通知(喚醒)

this

.notifyall()

;}public

synchronized

void

decrement()

throws interruptedexception

幹活number--

; system.out.

println

(thread.

currentthread()

.getname()

+"\t"

+number)

; 通知(喚醒)

this

.notifyall()

;}}

class

num 幹活

number++

; system.out.

println

(thread.

currentthread()

.getname()

+"\t"

+number)

; 通知(喚醒)

condition.

signalall()

;}catch

(exception e)

finally

}public

void

decrement()

throws interruptedexception

幹活number--

; system.out.

println

(thread.

currentthread()

.getname()

+"\t"

+number)

; 通知(喚醒)

condition.

signalall()

;}catch

(exception e)

finally

}}

public

class

juc03_customizedcommunication

,"thread_a").

start()

;new

thread((

)->

,"thread_bb").

start()

;new

thread((

)->

,"thread_ccc").

start()

;}}class

shareresource

public

void

printb()

public

void

printc()

/** * @param currentstate :該執行緒對應的 標誌位

* @param currentcondition : 當前執行緒 對應的 condition 物件

*/private

void

print

(int currentstate, condition currentcondition, condition nextcondition)

for(

int j =

0; j <

(state %3+

1); j++

) state++

; i++

; nextcondition.

signal()

;}catch

(interruptedexception e)

finally}}

}

多執行緒學習筆記4 執行緒間的通訊 2

多執行緒通訊 2 位元組流中的管道流 pipestream 是一種特殊的流,用於在不同執行緒之間直接傳輸資料 乙個執行緒傳送資料到輸出管道,另乙個執行緒從輸入管道讀取資料 jdk提供了四個類來使執行緒進行通訊 1.pipedinputstream和pipedoutputstream 2.pipedr...

多執行緒 執行緒間通訊

wait 方法的作用是使當前執行的執行緒進入等待,執行到 wait 一行進入等待 當執行緒被喚醒時從 wait 下一行開始執行。wait 方法需要在 synchronized 塊中呼叫,否則會報錯。wait 方法會釋放鎖,其它執行緒可以競爭獲得鎖 wait 方法有乙個帶時間引數的,當時間到了可以自動...

多執行緒 執行緒間通訊

學習思路 執行緒同步 鎖 wait notify join threadlocal 通過管道輸入 輸出流 字元流 位元組流 服務如果一直處於單執行緒訪問,那將毫無意義,多使用者訪問必然產生多執行緒,而多執行緒訪問必然離不開執行緒間通訊 多執行緒操作共享資源時勢必會產生執行緒安全的問題 也就是我們說的...