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是守護(hù)線程");// try {// Thread.sleep(1000);// } catch (InterruptedException e) {} } } }}為什么程序的運(yùn)行結(jié)果是無數(shù)個(gè) "線程B是守護(hù)線程",而另一個(gè)線程A并沒有執(zhí)行呢
3 回答
已采納

逆光之羽
TA貢獻(xiàn)55條經(jīng)驗(yàn) 獲得超13個(gè)贊
你的代碼沒有問題?。克悸窇?yīng)該也是對的 我拿你的代碼執(zhí)行出來A線程正常執(zhí)行 B線程作為守護(hù)線程也是程序執(zhí)行完后停止了
你確定你跑的時(shí)候A線程沒執(zhí)行?orz


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