為什么我的調(diào)用軍隊方法是成功的但是不執(zhí)行循環(huán)里面的內(nèi)容?
package com.imooc.war;
// ? ? ? ?軍隊
public class Host implements Runnable {
// volatile ?關(guān)鍵字保證線程可以正確讀取其他線程傳入的值
volatile boolean mm=true;
@Override
public void run() {
while(mm){
for(int i=1;i<=20;i++){
if(Thread.currentThread().getName().equals("毛毛"))
System.out.println(Thread.currentThread().getName()+"第"+i+"次 ?踩腳");
if(Thread.currentThread().getName().equals("蛋蛋"))
System.out.println(Thread.currentThread().getName()+"第"+i+"次 ?打屁股");
// 讓出處理器時間
Thread.yield();
// if(i==20){
// mm=false;
// }
}
}
System.out.println(Thread.currentThread().getName()+" ? 結(jié)束!");
}
}
------------------
package com.imooc.war;
// ? ? ? ? ? 作戰(zhàn)地點
public class stage implements Runnable {
@Override
public void run() {
Host mm=new Host();
Host dd=new Host();
Thread mmt=new Thread(mm, "毛毛");
Thread ddt=new Thread(dd, "蛋蛋");
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
mmt.start();
ddt.start();
mm.mm=false;
dd.mm=false;
try {
mmt.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new stage().run();
}
}
-------------
輸出 僅有:
蛋蛋 ? 結(jié)束!
毛毛 ? 結(jié)束!
2017-05-14
mmt.start();
ddt.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mm.mm=false;
dd.mm=false;
這樣就好了,原先可能是你沒有讓Stage線程休眠,然后程序運行到mmt.start();?ddt.start();后就接著運行mm.mm=false;?dd.mm=false;了 ?所以出現(xiàn)那樣的情況,,,,,,,個人見解,,本人 也是新手,,所以建議只供參考
2017-05-02
粘貼有誤
public class stage extends Thread?
stage s=new stage();
s.start();