java控制執行緒(二)
阿新 • • 發佈:2019-01-12
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異常。
最後:猜猜這是哪?
元