为什么System.out.println("正当双方激战正酣,半路杀出了个程咬金");和System.out.println("程咬金的理想就是结束战争,使百姓安居乐业!");中间还会有进攻啊 线程不是sleep了吗
我来挖坟啦,首先战争(进程)是动态的一直持续的,不会因为程咬金的出场而停止。
但是!如果想要凸显出程咬金的心理,而整个舞台停止是很简单滴~
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();
不懂,为什么
armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false;
之后还会继续执行for循环里面的内容,而不是直接打印“xxx结束了战斗”。
楼上正解
因为执行 sleep() 的进程是主线程 Stage,目的是从两个军队启动线程开始
//启动线程,让军队开始作战 armyOfSuiDynasty.start(); armyOfRevolt.start();
到程咬金出现
System.out.println("正当双方激战正酣,半路杀出了个程咬金");
之间,留有时间给军队双方执行各自线程 run() 方法里的 for 循环。这个 Stage 线程里的 sleep() 方法对两个军队线程没有任何作用。所以,当 Stage 线程执行到
System.out.println("正当双方激战正酣,半路杀出了个程咬金");
和
System.out.println("程咬金的理想就是结束战争,使百姓安居乐业!");
之间时,两个军队的线程并没有被暂停,而是继续执行各自 for 循环里的内容。
System.out.println("正当双方激战正酣,半路杀出了个程咬金"); 复制错了吧