守護線程與用戶線程
阿新 • • 發佈:2019-04-01
star color ont public 存在 nts 程序 live runnable
一、守護線程(Daemon Thread)
為用戶線程提供便利服務的線程就是守護線程,比如JVM中的垃圾回收器就是一種守護線程。守護線程不止是有JVM自行創建的線程,程序員也可以通過setDaemon(true)的方式,將用戶線程轉化為守護線程。當然,既然守護線程的唯一作用是為用戶線程提供便利服務,所以當程序中僅存在守護線程時,守護線程就沒有存在的必要了,JVM會關閉剩下的守護線程並且推出該進程。
二、用戶線程(User Thread)
所謂的用戶線程就是我們平時建議的有著自己專門作用的線程,也就是非守護線程。我們常見的main方法也同樣是用戶線程的一員。
public class DaemonThreadTest { public static void main(String[]args){ Thread t = new Thread( new Runnable() { @Override public void run() { try { while (true) System.out.println("這是守護線程"); }catch (Exception e){ e.printStackTrace(); } } } ); // t.setDaemon(true); t.start(); System.out.println(t.isAlive()); } }
通過這段代碼的執行,我們可以發現守護線程只能為線程提供服務,無法做輸入輸出操作。
守護線程與用戶線程