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 通過管道輸入 輸出流 字元流 位元組流 服務如果一直處於單執行緒訪問,那將毫無意義,多使用者訪問必然產生多執行緒,而多執行緒訪問必然離不開執行緒間通訊 多執行緒操作共享資源時勢必會產生執行緒安全的問題 也就是我們說的...