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

辅助的代码有什么用

辅助的代码还是要讲清楚,不知道什么意思难以理解例子。作为一个初学者的猜测: 1.两个线程start后会调用实现的run方法,每循环一次就释放一次CPU资源(调用了 yield 2.辅助代码Thread.sleep(50)表示CPU释放资源休眠50毫秒,大概是用于挂起当前线程(不造什么用 3.设置keepRunning为false确保两个线程中的死循环会停下来 4.运行armOfRevolt.join()方法让当前运行线程阻塞,直到amyOfRevolt运行完毕,再运行刚才停止的线程 我不懂执行顺序,一旦设置keepRunning为false,循环停止,不再输出,join方法不知道有什么意义;

正在回答

2 回答

Thread.sleep(50)的作用是让stage()这个线程休眠五十毫秒,写在Thread.sleep(50)后面的就是终止条件,表面来看整个逻辑确实很奇怪,因为你发现一整套下来线程跑的次数比你想象中的多的多。而真正让线程跑了那么多的就是这个休眠50毫秒。原因:

Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty, "隋军");
Thread armyOfRevolt = new Thread(armyTaskOfSuiDynasty, "农民起义军");

//启动线程,让军队开始战斗
armyOfSuiDynasty.start();
armyOfRevolt.start();

这里启用了两个线程,而这两个线程是嵌套在stage()这个线程里面的。Thread.sleep(50)只是让stage()休眠了五十毫秒,并没有休眠

armyOfSuiDynasty.start();
armyOfRevolt.start();

而这两个线程在没有遇到keepRunning=false之前是死循环,这个时候Thread.sleep(50)又让stage休眠了50毫秒,在这50毫秒里两军一直在干架,(如果你把时间改成1000,那会执行更多),所以原因差不多就这个吧,其他的也不多说了,你是个聪明人。

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

三季_1

完美解决了我的疑问,厉害!
2018-11-21 回复 有任何疑惑可以回复我~

yield()方法会使该线程释放对cpu目前的占用,方便其他线程可以竞争cpu

join()方法是会让执行该方法的线程一直执行完run()方法后,程序才会继续往下执行

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

举报

0/150
提交
取消

辅助的代码有什么用

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