1. 程式人生 > >1.11守護線程

1.11守護線程

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守護線程