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

已采纳回答 / 旗开得胜wds
yield方法后,两军竞争的机会均等,应该是巧合,你可以多运行几遍,每一遍应该都是不一样的。顺便再确认一下代码是否和视频里的一样

已采纳回答 / SDAFASG
加入Thread.yield()后,让同级的线程更有机会(增加了概率)。

已采纳回答 / saddhu
因为隋朝军队,农民起义军,和舞台进程优先级相同,军队没有执行while循环是因为先执行了suijun.keepRuning = false;和qiyijun.keepRuning=false;

已采纳回答 / qq_奋斗的青年_03620831
当中断没有发生时,this.isInterrupted()值为false,执行while循环体内程序,当中断发生时,this.isInterrupted()值为true,跳出while循环;如视频isInterrupted()是一个线程判断是否发生中断的方法,返回一个boolean值

已采纳回答 / 七塔
Oh sorry,问题看错了,因为虽然那两个KeepRunning虽然设置了false,但是for循环里还在循环跳不到while的判断去,用join加入就直接从头开始,到while直接判断结束,不进入for循环,就到底了,直接输出战斗结束

已采纳回答 / 修炼狂人
可以啊,这是多态的问题,直接使用父类可以比较统一。

已采纳回答 / 慕粉3610080
当keepRunning=true,while语句一直在执行;当将keepRunning=false,不满足while的循环条件,但并不会马上终止while循环,while里面的for循环还是会执行的,当while里面的程序运行完后,跳出while循环,不再进入。

已采纳回答 / 张探长
查看api可知道 Runnable 接口,只提供了run()方法。所以只实现了 Runnable 接口的类并不能启动线程。当你再查看Thread的api时,有多个重载的构造函数比如这个: <...code...>启动线程只能用Thread里面的start() 方法。<...code...>

已采纳回答 / 慕九州3071363
yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。

已采纳回答 / qq_弑神S无尘
当年我学也没有,推荐一种写法private boolean flag=true;public void setFlag(boolean f ){flag=f;}在别的地方调用setFlag来改变标志。老师讲的关键字是什么时候出的我都不知道,我手边的书附录java关键字表也没有它

已采纳回答 / 慕婉清0501596
看你用的什么软件  我用的idea 快捷键是Ctrl+D eclipse 是  Ctrl+Alt+↓    复制当前行到下一行(复制增加)Ctrl+Alt+↑    复制当前行到上一行(复制增加)  百度下就行   

已采纳回答 / qq_慕粉119689
1.这个程序有四个线程。我们一开始是让stage线程启动,之后启动完之后,再启动armyOfSuiDynasty和armyOfRevolt这两个对象的线程。假如你不让舞台休眠50ms的话,那么舞台线程会继续执行下去,等到旗标的地方为false时,两个对象分别只运行一次循环。我认为你的第二个问题个第一个问题有点重复。第二个问题。stage线程对子线程的继续执行肯定有影响,没有stage线程的休眠,子线程肯定不可能厮杀那么久,至于为什么,就是因为想让他们厮杀一下吧。控制子线程的执行时间吧。我想。你不妨可以实际...
课程须知
本课程的学习,需要小伙伴们具有面向对象基础知识及 Java 语言基础。如果您是新手,建议先移步 《Java入门第一季》和《Java入门第二季》
老师告诉你能学到什么?
1、Java 中如何使用线程 2、什么是争用条件 3、线程如何交互

微信扫码,参与3人拼团

微信客服

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

帮助反馈 APP下载

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

公众号

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

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消