public class Daemon implements Runnable { Thread A,B; public Daemon() { A = new Thread(this); B = new Thread(this); } @Override public void run() { Thread t = Thread.currentThread(); if(t == A){ for (int i = 0; i < 8; i++) { System.out.println("i = " + i);// try {// Thread.sleep(1000);// } catch (InterruptedException e) {} } }else if(t == B){ while(true){ System.out.println("線程B是守護線程");// try {// Thread.sleep(1000);// } catch (InterruptedException e) {} } } }}為什么程序的運行結果是無數個 "線程B是守護線程",而另一個線程A并沒有執行呢
3 回答


逆光之羽
TA貢獻55條經驗 獲得超13個贊
執行的線程的部分的代碼怎么寫的?
應該是你while(true)造成死循環的原因吧?就算你執行代碼打算把Daemon跑上多次,第一次進入
else if(t == B){
while(true){
}}
這個判斷條件之后程序就卡死在里面了,一直輸出"線程B是守護線程"也是正常的吧
老實說你這代碼的思路沒看懂orz 只能猜個大概
添加回答
舉報
0/150
提交
取消