问答详情
源自:4-4 Java线程交互之深入剖析互斥与同步

为什么同步中用while不用if

while (energyBoxes[from]<amount) { lockObject.wait(); }

不在同步中用的确是if(energyBoxes[from]<amount) {return;}

提问者:car 2016-10-17 10:51

个回答

  • 林二小
    2016-10-30 18:15:10

    抱歉,好久没来慕课了,上次没回答清楚。简单说就是,if语句是不满足条件就退出,while是不满足条件就等着满足条件。if条件满足之后之后return,会退出该方法。while之后是wait,没有return,所以并没有结束,只是当前线程进入了等待序列,当线程下一次获取cpu时间时还需要判断while里面的条件是否满足,才能执行下面的语句,所以需要while来反复判断。

  • 林二小
    2016-10-17 22:59:17

    因为while是循环的啊,if只会执行一次。