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

舞台休眠sleep(50) 的理解 请大家帮我看看对吗?

主要在于这个yield()方法

yield()让出线程后--》 程序应该已经跳出当前军队这个线程了--》然后隋军,起义军,舞台三条线程开始争夺运行权, 但是正好这时设置了 舞台休眠sleep(50) 导致舞台无法参与竞争--》所以只有隋军和起义军参与争夺。 

而且整个程序运行时间正好就是舞台休眠的时间 ,舞台休眠完成后 --》隋军和起义军停止攻击 (keepRunning=false) --》最后中断舞台线程(join()) .


所以我理解为:打印结果输出的内容全部都是在舞台休眠sleep(50)(50毫秒)内完成的对吗?

正在回答

1 回答

不不,第一这个yield(),只是在军队这个线程里,和舞台没有关系;第二休眠50毫秒是整个舞台停止进程50毫秒,舞台停止的50毫秒中,军队线程是继续执行的;第三join()方法执行后会让出所有资源给它的对象,而在打印的输出实在无时无刻不进行的,也就在舞台里的打印输出会因为舞台线程的休眠而休眠

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

qq_老表_1 提问者

yield()是不是只能运行此线程类的对象啊? 是不是应为 隋军和起义军都是同一个线程类实例化的对象 所以yield()只能用于 隋军和起义军 ,而舞台和他们不是一个线程类所以不能参与线程资源竞争?
2016-03-24 回复 有任何疑惑可以回复我~
#2

u_sicAsiaChina_0 回复 qq_老表_1 提问者

是的,你写在哪,他就只对谁起作用。舞台可以说是主线程,yield()用到再子线程中,使两个军队线程在执行了yield()后回到了可执行状态,所以说之后谁会执行并不一定,要看虚拟机会让谁执行,而舞台进程中并没有yield(),所以舞台并不会退出资源到可执行状态。舞台只是休眠指定时间后继续执行
2016-03-29 回复 有任何疑惑可以回复我~
#3

qq_老表_1 提问者

非常感谢!
2016-03-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

舞台休眠sleep(50) 的理解 请大家帮我看看对吗?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号