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

为什么后台循环打印了那么多次?不应该只是每个线程这样for(int i=0;i<5;i++)循环5此后就结束吗?

     

http://img1.sycdn.imooc.com//5a41bad70001094113380622.jpg

http://img1.sycdn.imooc.com//5a41bad9000114c713000615.jpg

//启动线程,让军队开始作战
        armyOfSuiDynasty.start();
        armyOfRevolt.start();
        
        //舞台线程休眠50毫秒,大家专心观看军队厮杀
        try {
            Thread.sleep(50);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        armyTaskOfSuiDynasty.keepRunning=false;
        armyTaskOfRevolt.keepRunning=false;

正在回答

3 回答

我也不懂他什么时候执行keepRunning=false,,,打印的次数会不会和舞台休眠的时间有关呢?

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

qq_闎_ehpwzA

stag 线程和 dynasty和 revolt是同步开始的,然后dynasty 和 revolt就一直在循环,while循环不是每次都会读取那个wihile值嘛,然后在舞台sleep了几次之后将 keepRunning设置为false,下一次轮到 dynasty 和 revolt的线程的时候读到了,所以while就停止了啊
2018-11-08 回复 有任何疑惑可以回复我~
#2

qq_闎_ehpwzA 回复 qq_闎_ehpwzA

也不是同步 start()了其他的线程之后,其他两条线程就一直运行了.
2018-11-08 回复 有任何疑惑可以回复我~

你要知道 在ArmyRunnable 类 中 while(keepRunning)  这里是用的while 而不是if,while会一直判断,if只会判断一次,就是你在ArmyRunnable中的初始值!

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

你把农民起义军的代码贴一下呀

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

举报

0/150
提交
取消

为什么后台循环打印了那么多次?不应该只是每个线程这样for(int i=0;i<5;i++)循环5此后就结束吗?

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