qq_老表_1
2016-03-24 00:11
主要在于这个yield()方法
yield()让出线程后--》 程序应该已经跳出当前军队这个线程了--》然后隋军,起义军,舞台三条线程开始争夺运行权, 但是正好这时设置了 舞台休眠sleep(50) 导致舞台无法参与竞争--》所以只有隋军和起义军参与争夺。
而且整个程序运行时间正好就是舞台休眠的时间 ,舞台休眠完成后 --》隋军和起义军停止攻击 (keepRunning=false) --》最后中断舞台线程(join()) .
所以我理解为:打印结果输出的内容全部都是在舞台休眠sleep(50)(50毫秒)内完成的对吗?
不不,第一这个yield(),只是在军队这个线程里,和舞台没有关系;第二休眠50毫秒是整个舞台停止进程50毫秒,舞台停止的50毫秒中,军队线程是继续执行的;第三join()方法执行后会让出所有资源给它的对象,而在打印的输出实在无时无刻不进行的,也就在舞台里的打印输出会因为舞台线程的休眠而休眠
深入浅出Java多线程
186071 学习 · 498 问题
相似问题