课程
/后端开发
/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?