三、執行緒等待通知
四、參考
如果等待時長為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...