为什么同步中用while不用if

来源:4-4 Java线程交互之深入剖析互斥与同步

car

2016-10-17 10:51

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

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

写回答 关注

2回答

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

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

    霸气小肆毛

    还是没有理解,修改为if,程序也是可以运行的,大佬能再详细点嘛

    2019-03-30 18:14:11

    共 3 条回复 >

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

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

    car

    知道是循环,之前不循环也行,现在要实现同样功能就要循环。什么原因。

    2016-10-17 23:52:08

    共 1 条回复 >

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题