为了账号安全,请及时绑定邮箱和手机立即绑定

为什么同步中用while不用if

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

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

正在回答

2 回答

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

0 回复 有任何疑惑可以回复我~
#1

林二小

多处“条件”含义有所不同,“if条件满足”表示if为true时,不知道怎样修改回复。。
2016-10-30 回复 有任何疑惑可以回复我~
#2

car 提问者

可能这就是多线程
2016-10-30 回复 有任何疑惑可以回复我~
#3

霸气小肆毛

还是没有理解,修改为if,程序也是可以运行的,大佬能再详细点嘛
2019-03-30 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

car 提问者

知道是循环,之前不循环也行,现在要实现同样功能就要循环。什么原因。
2016-10-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么同步中用while不用if

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信