2015-08-09 118 views
0

這是一個非常簡短的問題,但無法從任何地方得到答案。守護程序線程不止一個?

可以創建多個守護線程?

+2

是的,爲什麼不嘗試呢? – SMA

+1

是的,沒有什麼可以阻止這一點。 –

+0

真的很抱歉,我實際上嘗試過並得到'java.lang.IllegalThreadStateException'。所以我認爲只有一個守護線程被允許。但收到你的回覆後,我再次嘗試,發現我犯了一個愚蠢的錯誤。我在啓動線程後調用setDaemon()。謝謝! – Jenix

回答

2

是的。你可以簡單的代碼測試它像

Thread t1 = new Thread(()->{ 
    while(true){ 
     System.out.println("daemon1"); 
     try { 
      TimeUnit.SECONDS.sleep(1); 
     } catch (Exception e) {} 
    } 
}); 
t1.setDaemon(true); 

Thread t2 = new Thread(()->{ 
    while(true){ 
     System.out.println("daemon2"); 
     try { 
      TimeUnit.SECONDS.sleep(2); 
     } catch (Exception e) {} 
    } 
}); 
t2.setDaemon(true); 

t1.start(); 
t2.start(); 

try { 
    TimeUnit.SECONDS.sleep(5); 
} catch (Exception e) {} 
System.out.println("main thread stopped"); 

輸出:

daemon1 
daemon2 
daemon1 
daemon2 
daemon1 
daemon1 
daemon1 
daemon2 
daemon1 
main thread stopped 

正如你看到的兩個守護進程潔具在同一時間運行。此外,由於沒有其他非守護線程,應用程序停止。

+0

謝謝Pshemo! – Jenix