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