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

来源:2-5 Java线程-隋唐演义实战开发---关键先生

慕仔1575412

2017-12-26 10:58

     

http://img3.mukewang.com/5a41bad70001094113380622.jpg

http://img2.mukewang.com/5a41bad9000114c713000615.jpg

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

写回答 关注

3回答

  • 慕瓜7073846
    2018-04-17 15:37:49

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

    qq_闎_e... 回复qq_闎_e...

    也不是同步 start()了其他的线程之后,其他两条线程就一直运行了.

    2018-11-08 15:21:53

    共 2 条回复 >

  • 若如初见1997
    2017-12-28 23:12:05

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

  • 小林家的mooc
    2017-12-26 11:33:55

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

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题