while (energyBoxes[from]<amount) { lockObject.wait(); }
不在同步中用的确是if(energyBoxes[from]<amount) {return;}
抱歉,好久没来慕课了,上次没回答清楚。简单说就是,if语句是不满足条件就退出,while是不满足条件就等着满足条件。if条件满足之后之后return,会退出该方法。while之后是wait,没有return,所以并没有结束,只是当前线程进入了等待序列,当线程下一次获取cpu时间时还需要判断while里面的条件是否满足,才能执行下面的语句,所以需要while来反复判断。
因为while是循环的啊,if只会执行一次。