1. 程式人生 > >java控制執行緒(二)

java控制執行緒(二)

java控制執行緒(二)

            控制執行緒-守護執行緒

後臺執行緒:

what:

有一種執行緒,它是在後臺執行的,它的任務是為其他的執行緒提供服務,這種執行緒被稱為“後臺執行緒(Daemon Thread)”
又稱為"守護執行緒“或”精靈執行緒“。
JVM的垃圾回收機制就是典型的後臺執行緒。

特徵:

如果所有的前臺執行緒都死亡,後臺執行緒會自動死亡。

How:

呼叫Thread物件的setDaemon(true)方法可以將執行執行緒設定為後臺執行緒。
示例:

public class DaemonThreadDaemon extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(getName() + i);
        }
    }

    public static void main(String[] args) {
        DaemonThreadDaemon t1 = new DaemonThreadDaemon();
        t1.setDaemon(true);
        t1.start();
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "  " + i);
        }

    }
}

結果:

在這裡插入圖片描述
Thread類還提供了一個isDaemon()方法,用於判定指定執行緒是否為後臺執行緒。

主執行緒預設是前臺執行緒,t執行緒預設也是前臺執行緒。並不是所有的執行緒預設都是前臺執行緒----前臺執行緒建立的子執行緒
預設是前臺執行緒,後臺執行緒建立的子執行緒預設是後臺執行緒。

!:
前臺執行緒死亡後,JVM會通知後臺執行緒死亡,但從它接收指令到做出響應,需要一定的時間。而且
要將某個執行緒設定為後臺執行緒,必須在該執行緒啟動之前設定,也就是說,setDaemon(true)必須在start()
方法之前呼叫,負責會引發IllegalThreadStateException異常。

最後:猜猜這是哪?
在這裡插入圖片描述