死循環(huán),怎么破?
package com.thread;
/**
?* 隋唐演義作戰(zhàn)舞臺(tái)
?*/
public class Stage extends Thread {
public void run(){
System.out.println("隋唐演義馬上開(kāi)始,請(qǐng)保持安靜");
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
//創(chuàng)建軍隊(duì)任務(wù)
ArmyRunnable armyTaskOfSuiTang = new ArmyRunnable();
ArmyRunnable armyTaskOfFarmmer = new ArmyRunnable();
//使用Runnable接口,創(chuàng)建軍隊(duì)線程
Thread armyOfSuiTang = new Thread(new ArmyRunnable(),"隋軍");
Thread armyOfFarmmer = new Thread(new ArmyRunnable(),"農(nóng)民軍");
//啟動(dòng)線程,讓軍隊(duì)開(kāi)始作戰(zhàn)
armyOfSuiTang.start();
armyOfFarmmer.start();
//舞臺(tái)線程休眠
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
//半路殺出個(gè)程咬金
System.out.println("正當(dāng)雙方打得正酣,半路殺出來(lái)一個(gè)程咬金,隋軍猝不及防!");
Thread Cheng = new KeyPersonThread();
Cheng.setName("陳咬金");
System.out.println("陳咬金見(jiàn)不得隋軍猖狂!");
//停止軍隊(duì)線程作戰(zhàn)
armyTaskOfSuiTang.keepRunning = false;
? ? ? armyTaskOfFarmmer.keepRunning = false;
? ? ?
? ? ? try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
? ? ?
? ? ? //等待關(guān)鍵人物完成任務(wù)
? ? ? Cheng.start();
? ? ? try {
Cheng.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
? ?
? ? ? System.out.println("戰(zhàn)爭(zhēng)結(jié)束!");
? ? ? System.out.println("謝謝觀眾觀看,可以離場(chǎng)!");
}
public static void main(String[] args) {
new Stage().start();
}
}
2016-08-16
輸出效果呢?