1.11守護線程
阿新 • • 發佈:2017-12-05
catch trac 所有 當前 png log 運行 div err
在Java中有兩種線程,一種為用戶線程,一種為守護線程。
守護線程是一種特殊的線程,它具有“陪伴”的含義,當進程中不存在非守護線程時,則守護線程自動銷毀。
典型的守護線程就是垃圾回收線程。
當進程中沒有線程了,則垃圾回收線程也就沒有存在的必要了,自動銷毀。
任何一個守護線程,都是JVM中所有的非守護線程的保姆,只要當前JVM實例中存在任何一個非守護線程,且沒有結束,守護線程就在工作,只有當最後一個非守護線程結束時,守護線程才隨著JVM一同結束工作。
Daemon的作用就是為其他線程運行提供便利,守護線程最典型的應用就是GC。
線程代碼:
public class Thread1 extends Thread {
private int i = 0;
@Override
public void run() {
try {
while (true) {
i++;
System.out.println("i = " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
執行代碼:
public class Main {
public static void main(String[] args) {
try {
Thread1 thread = new Thread1();
thread.setDaemon(true);
thread.start();
Thread.sleep(5000);
System.out.println("main線程停止了,則守護線程也停止了。不在打印。");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
執行結果:
隨著主線程停止了工作,守護線程隨即也停止了工作。
1.11守護線程