03 Java多執行緒 執行緒等待通知機制

2021-09-23 14:44:15 字數 977 閱讀 4631

三、執行緒等待通知

四、參考

如果等待時長為t,當前時間為now,那麼now+t以後超時

long overtime = now+t

long remain = t

while(result不滿足 && remian>0)

return result;

//shop類模擬商店,初始狀態玩具是nothing,執行緒等待玩具,一旦有玩具了會通知等待的執行緒

public

class

shop

//等待玩具,如果沒有玩具就阻塞,一旦有玩具了,會喚醒等待玩具的執行緒

public

synchronized

void

waittoy

(long mills)

catch

(interruptedexception e)

}//說明是等待超時退出if(

"nothing"

.equalsignorecase

(toy)

)else

}//玩具到貨了,玩具到貨之後通知等待玩具的執行緒

public

synchronized

void

sendtoy

(string toy)

}//測試類:初始化三個執行緒等待玩具,一段時間後玩具有了,但是等待執行緒可以自定義等待時間,只有還在等待的執行緒會收到通知。

public

class

shoptest

@override

public

void

run()}

public

static

void

main

(string[

] args)

throws interruptedexception

}

Java多執行緒03

生產者檢查倉庫是否已經滿了,如果沒滿,將生產產品 如果倉庫已滿,停止生產產品。消費者檢查倉庫是否已空,倉庫不空,消費者消費產品 若空,消費者停止消費產品。分析 這是乙個執行緒同步問題,生產者和消費者共享同乙個資源,並且生產者和消費者之間相互依賴,互為條件。對於生產者,沒有生產產品之前,要通知消費者等...

執行緒通知與等待

當乙個執行緒呼叫乙個共享變數的 wait 方法時,該呼叫執行緒會被阻塞掛起,直到發生下面幾件事情之一才返回。其他執行緒呼叫了該共享物件的 notify 或者 notify 方法 其他執行緒呼叫了該執行緒的 interrupt 方法,該執行緒丟擲 interruptedexception 異常返回。注...

執行緒通知與等待

乙個執行緒呼叫乙個共享變數的wait 方法時,該執行緒會被阻塞掛起。呼叫wait的前提是該執行緒有獲取共享變數的監視器鎖。獲取監視器鎖 1 synchronize 共享變數 2 在在共享變數的方法前加synchronize關鍵字,呼叫該方法。若執行緒沒有獲取監視器鎖而呼叫了wait 則會丟擲ille...