亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于守護線程

關于守護線程

慕粉3291149 2016-12-13 16:42:39
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個贊


http://img1.sycdn.imooc.com//584fcfeb0001cbdf08920505.jpg

你的代碼沒有問題???思路應該也是對的 我拿你的代碼執行出來A線程正常執行 B線程作為守護線程也是程序執行完后停止了

你確定你跑的時候A線程沒執行?orz

查看完整回答
反對 回復 2016-12-13
  • 慕粉3291149
    慕粉3291149
    好吧 由于結果太多 那個滾動條一滾就好多結果 我沒看清楚 還以為全都是那個結果
?
逆光之羽

TA貢獻55條經驗 獲得超13個贊

執行的線程的部分的代碼怎么寫的?

應該是你while(true)造成死循環的原因吧?就算你執行代碼打算把Daemon跑上多次,第一次進入

else if(t == B){

while(true){

}}

這個判斷條件之后程序就卡死在里面了,一直輸出"線程B是守護線程"也是正常的吧

老實說你這代碼的思路沒看懂orz 只能猜個大概


查看完整回答
反對 回復 2016-12-13
  • 慕粉3291149
    慕粉3291149
    public static void main(String[] args) { Daemon daemon = new Daemon(); daemon.A.start(); daemon.B.setDaemon(true); daemon.B.start(); }
  • 慕粉3291149
    慕粉3291149
    兩個線程都執行了 為什么只是守護線程在運行,就算是while循環,線程之間也是輪流運行的啊,另一個線程總有機會運行吧
  • 3 回答
  • 0 關注
  • 1531 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號