課程
/后端開發(fā)
/Java
/深入淺出Java多線程
while (energyBoxes[from]<amount) { lockObject.wait(); }
不在同步中用的確是if(energyBoxes[from]<amount) {return;}
2016-10-17
源自:深入淺出Java多線程 4-4
正在回答
抱歉,好久沒來慕課了,上次沒回答清楚。簡單說就是,if語句是不滿足條件就退出,while是不滿足條件就等著滿足條件。if條件滿足之后之后return,會退出該方法。while之后是wait,沒有return,所以并沒有結(jié)束,只是當(dāng)前線程進入了等待序列,當(dāng)線程下一次獲取cpu時間時還需要判斷while里面的條件是否滿足,才能執(zhí)行下面的語句,所以需要while來反復(fù)判斷。
林二小
car 提問者
霸氣小肆毛
因為while是循環(huán)的啊,if只會執(zhí)行一次。
舉報
帶你一起深入淺出多線程,掌握基礎(chǔ),展望進階路線
2 回答為什么要用while,不可以用if嗎?
2 回答run()方法為什么用while循環(huán)而不用if
4 回答為什么眼使用 Volatile 同步機制
1 回答為什么用為什么用if((System.currenttime - time)<1000)而不用sleep(1000)?
2 回答是否可以將synchronized塊中的while替換為if?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-10-30
抱歉,好久沒來慕課了,上次沒回答清楚。簡單說就是,if語句是不滿足條件就退出,while是不滿足條件就等著滿足條件。if條件滿足之后之后return,會退出該方法。while之后是wait,沒有return,所以并沒有結(jié)束,只是當(dāng)前線程進入了等待序列,當(dāng)線程下一次獲取cpu時間時還需要判斷while里面的條件是否滿足,才能執(zhí)行下面的語句,所以需要while來反復(fù)判斷。
2016-10-17
因為while是循環(huán)的啊,if只會執(zhí)行一次。