課程
/后端開發
/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,所以并沒有結束,只是當前線程進入了等待序列,當線程下一次獲取cpu時間時還需要判斷while里面的條件是否滿足,才能執行下面的語句,所以需要while來反復判斷。
林二小
car 提問者
霸氣小肆毛
因為while是循環的啊,if只會執行一次。
舉報
帶你一起深入淺出多線程,掌握基礎,展望進階路線
2 回答為什么要用while,不可以用if嗎?
2 回答run()方法為什么用while循環而不用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 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-10-30
抱歉,好久沒來慕課了,上次沒回答清楚。簡單說就是,if語句是不滿足條件就退出,while是不滿足條件就等著滿足條件。if條件滿足之后之后return,會退出該方法。while之后是wait,沒有return,所以并沒有結束,只是當前線程進入了等待序列,當線程下一次獲取cpu時間時還需要判斷while里面的條件是否滿足,才能執行下面的語句,所以需要while來反復判斷。
2016-10-17
因為while是循環的啊,if只會執行一次。