不C
2016-11-19 13:00
为什么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("正当双方激战正酣,半路杀出了个程咬金"); 复制错了吧
深入浅出Java多线程
186065 学习 · 502 问题
相似问题