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

为什么在stage的run方法中不设置sleep方法,那么keepRunning值会直接设置为false?

http://img1.sycdn.imooc.com//59591dd2000156bc08780590.jpg

我不设置sleep后,子线程直接输出结束语句了,没有执行while循环,这是为什么?

难道如果不设置sleep,那么只会执行Stage线程?所以即使在stage的run方法中即使start了其他线程,也不会执行?

正在回答

2 回答

其他线程在他的start()方法执行后,并没有立即获得cpu时间,所以里面的run()方法没有立即执行,等到stage线程让出cpu时间后才会执行。但是你没休眠,stage线程会执行到赋值keeprunning为false,stage线程这时让出cpu时间,其他线程再试行,但已经不会打印输出语句了。如果你有休眠,stage线程执行到休眠时就让出了cpu时间,后面的给keeprunning赋值没有执行,所以可以打印、

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

qq_大熊_14

谢谢!
2017-08-26 回复 有任何疑惑可以回复我~

是不是即使调了start方法,只要没有释放资源,其他线程也无法执行?

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

举报

0/150
提交
取消

为什么在stage的run方法中不设置sleep方法,那么keepRunning值会直接设置为false?

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