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

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

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


正在回答

5 回答

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

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

  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();


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

不懂,为什么

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

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

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

楼上正解

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

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

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

到程咬金出现

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

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

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

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

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

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

慕粉4279355

第一句“因为执行 sleep() 的进程”应该改成“因为执行 sleep() 的线程”
2016-12-03 回复 有任何疑惑可以回复我~
#2

慕瓜7073846

有没有可能到战斗结束,农民军进攻不到5次
2018-08-15 回复 有任何疑惑可以回复我~

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

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

举报

0/150
提交
取消

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

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