问答详情
源自:3-2 Java线程停止正确的方法---设置退出旗标

为什么System.out.println("正当双方激战正酣,半路杀出了个程咬金");和System.out.println("程咬金的理想就是结束战争,使百姓安居乐业!");中间还会有进攻啊 线程不是sleep了吗

为什么System.out.println("正当双方激战正酣,半路杀出了个程咬金");和System.out.println("程咬金的理想就是结束战争,使百姓安居乐业!");中间还会有进攻啊 线程不是sleep了吗


提问者:不C 2016-11-19 13:00

个回答

  • IEwuIL7
    2019-12-13 15:08:45

    我来挖坟啦,首先战争(进程)是动态的一直持续的,不会因为程咬金的出场而停止。

    但是!如果想要凸显出程咬金的心理,而整个舞台停止是很简单滴~

      Thread mrCheng = new KeyPersonThread();		
      mrCheng.setName("程咬金");
        try{
            Thread.sleep(600);
            System.out.println("--正当双方战况焦灼,半路突然杀出个程咬金...");
            Thread.sleep(1000);
            System.out.println("--程咬金的理想就是推翻昏庸无能的皇帝。");
            Thread.sleep(1500);
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
      mrCheng.start();


  • 今晚打番薯
    2018-12-08 10:41:55

    不懂,为什么

    armyTaskOfSuiDynasty.keepRunning = false;
    armyTaskOfRevolt.keepRunning = false;

    之后还会继续执行for循环里面的内容,而不是直接打印“xxx结束了战斗”。

  • qq_为妳战天下_0
    2017-08-13 10:38:24

    楼上正解

  • 慕粉4279355
    2016-12-03 02:11:18

    因为执行 sleep() 的进程是主线程 Stage,目的是从两个军队启动线程开始

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

    到程咬金出现

    System.out.println("正当双方激战正酣,半路杀出了个程咬金");

    之间,留有时间给军队双方执行各自线程 run() 方法里的 for 循环。这个 Stage 线程里的 sleep() 方法对两个军队线程没有任何作用。所以,当 Stage 线程执行到

    System.out.println("正当双方激战正酣,半路杀出了个程咬金");

    System.out.println("程咬金的理想就是结束战争,使百姓安居乐业!");

    之间时,两个军队的线程并没有被暂停,而是继续执行各自 for 循环里的内容。

  • 申世贤
    2016-11-19 13:57:58

    System.out.println("正当双方激战正酣,半路杀出了个程咬金");  复制错了吧