為什么我的軍隊在線程開始執行之后沒有while循環?
public class ArmRunnable implements Runnable {
/**
?* 軍隊runnable
?* 模擬雙發作戰的行為
?*?
?*/
volatile boolean keepRuning=true;
@Override
public void run() {
while(keepRuning){
//發動5連擊
for(int i=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+"進攻對方["+i+"]");
//讓出了處理器時間,下次該誰進攻還不一定呢!
Thread.yield();
}
}
System.out.println(Thread.currentThread().getName()+"結束了戰斗!");
}
public class Stage extends Thread {
private final Object obj=new Object();
public void run(){
// TODO 自動生成的方法存根
System.out.println("隋唐演義上演,大幕徐徐拉開");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
//軍隊登場
ArmRunnable suijun=new ArmRunnable();
ArmRunnable ?qiyijun=new ArmRunnable();
?
//構建兩個線程
Thread sui=new Thread(suijun,"隋軍");
Thread nong=new Thread(qiyijun,"農民起義軍");
sui.start();
nong.start();
suijun.keepRuning=false;
qiyijun.keepRuning=false;
不知道我又錯在哪里了?
2016-09-26
因為隋朝軍隊,農民起義軍,和舞臺進程優先級相同,
軍隊沒有執行while循環是因為先執行了suijun.keepRuning = false;和qiyijun.keepRuning=false;