下面的代碼進入wait之后,再次被喚醒,會不會有一定幾率導致程序發(fā)生死鎖?
synchronized(lockObj){
?
// if (energyBoxes[from] < amount)
// return;
//while循環(huán),保證條件不滿足時任務都會被條件阻擋
//而不是繼續(xù)競爭CPU資源
while (energyBoxes[from] < amount){
try {
//條件不滿足, 將當前線程放入Wait Set
lockObj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
?
2016-09-02
不會,在老師的例子中設置了單次轉(zhuǎn)移能量的上限等于初始能量,因此至少有一條線程可以滿足條件
2016-04-07
會,如果所有的線程都進入wait set中,那么所有的線程都在等待。