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

关于sleep会让效果更明显的想法

会不会是因为你的线程在sleep,然后在主线程的while循环中的判断条件不满足了,就是因为有些线程还在sleep,判定的就不是处于active状态,就进行了getNumber的操作,所以才会有这么明显的体现。

正在回答

1 回答

while循环内判断的是所有的子线程是否都运行完了,如果是的话,继续下面的打印操作。

如果不用synchronized或不加锁,程序运行时,有时候getNumber获得的值小于500,是因为volatile定义的变量不能保证原子性,所以会出现两个线程同时写number时,number只增加了1,没有增加2,所以影响到number变量最终的值不是500,而是499或498了。

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

xiong520 提问者

在sleep的线程算是运行完还是没运行完?
2017-07-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于sleep会让效果更明显的想法

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