※ 引述《vrgigi.bbs@bbs.mgt.ncu.edu.tw (夏傑)》之銘言:
: java中的wait和notify我一直搞不太懂,問題是這樣的
: 我run了3個thread分別是A,B,C
: 當A.wait()之後,就會進入wait pool中...隨後B.wait()也進入wait pool
: 此時wait pool中有兩個wait分別是A和B
: 而running中的C.notify()...
: 我的問題就在這裡~~C.notify會喚醒A還是喚醒B??
: 還是由系統決定要喚醒A或B??
: 可以由程式中指定要喚醒誰嗎?
想要指定喚醒誰是必須經由人工另外處理
你可以將A跟B被喚醒後,立刻做檢查條件
不符合條件就繼續wait
當有人需要叫醒A(舉例),就先設定讓A可以通過檢查條件,再notifyAll
這樣即使A跟B都被叫醒,但只有A可以通過檢查條件,B依然會繼續wait
我想這樣應該就可以達到由程式決定被喚醒者
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.64.166