多執行緒 4執行緒間的通訊

2021-09-29 23:18:56 字數 1045 閱讀 9526

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