wait和notify方法
簡單的生產者消費者
面試點1. wait和notify方法
當乙個物件呼叫了wait方法那麼它將阻塞當前執行緒, 直到有另外乙個執行緒呼叫了當前物件的notify方法,被阻塞的執行緒才可能被喚醒。
注意:若要呼叫這兩個方法必須先獲得物件的鎖,不讓會丟擲異常
public
static
void
main
(string[
] args)
catch
(interruptedexception e)}}
).start()
;//執行緒b
newthread((
)->
catch
(interruptedexception e)}}
).start()
;}
2.簡單的生產者消費者
有了上面提到的wait和notify兩個方法,我們可以利用這兩個方法實現乙個簡單(生產者生產乙個等待消費者消費再生產)的生產者消費者;
實現思路:
開啟兩個執行緒,乙個不斷的生產乙個不斷的消費
生產者執行緒生產訊息之後喚醒等待中的消費者並讓自己阻塞,等待消費者消費之後讓消費者喚醒自己
消費者執行緒: 消費訊息,喚醒生產者執行緒,然後自己阻塞
具體實現:
public
class
producerconsumer
else
catch
(interruptedexception e)}}
}},"producer").
start()
;// 定義消費者執行緒
newthread((
)->
else
catch
(interruptedexception e)}}
}},"consumer").
start()
;}}
3.面試考點 Java多執行緒 4 執行緒間通訊
有這麼幾個方法,它們就定義在大家都非常熟悉的object類中,但是大家卻從來沒有呼叫過,並且也不知道是做什麼的,今天就由我帶著你們熟悉一下下面的這三個方法。它們都是定義在object類中的final方法,並且只能在synchronized上下文中呼叫。如果你現在還不明白,沒關係,下面我會用乙個 生產...
多執行緒 執行緒間通訊
wait 方法的作用是使當前執行的執行緒進入等待,執行到 wait 一行進入等待 當執行緒被喚醒時從 wait 下一行開始執行。wait 方法需要在 synchronized 塊中呼叫,否則會報錯。wait 方法會釋放鎖,其它執行緒可以競爭獲得鎖 wait 方法有乙個帶時間引數的,當時間到了可以自動...
多執行緒 執行緒間通訊
學習思路 執行緒同步 鎖 wait notify join threadlocal 通過管道輸入 輸出流 字元流 位元組流 服務如果一直處於單執行緒訪問,那將毫無意義,多使用者訪問必然產生多執行緒,而多執行緒訪問必然離不開執行緒間通訊 多執行緒操作共享資源時勢必會產生執行緒安全的問題 也就是我們說的...