線程在wait()之后...
????這里我假設 線程A 的energyBoxes[from]=50,amount=100,因為50<100,所以肯定會調用wait()方法,當 線程A 被其他線程喚醒后,energyBoxes[from]的值還是50,amount的值還是100嗎?如果是,那就是說,線程A會一直卡在這段代碼中,不能往下運行的意思嗎?
????另外我想問,當線程被喚醒后,線程是從while (energyBoxes[from] < amount)?這段代碼開始運行嗎 ?
????這里我假設 線程A 的energyBoxes[from]=50,amount=100,因為50<100,所以肯定會調用wait()方法,當 線程A 被其他線程喚醒后,energyBoxes[from]的值還是50,amount的值還是100嗎?如果是,那就是說,線程A會一直卡在這段代碼中,不能往下運行的意思嗎?
????另外我想問,當線程被喚醒后,線程是從while (energyBoxes[from] < amount)?這段代碼開始運行嗎 ?
2014-12-23
舉報
2014-12-23
你得理解是正確的,這就是為什么使用了一個while循環來阻擋不符合條件的操作。
每次被喚醒并獲得鎖后,都是從wait之后的地方繼續循環。