控制線程--後臺線程

       我們上一篇講了join線程,這一篇我們主要來了解一下後臺線程。後臺線程主要是爲其他線程提供服務,如果前臺線程都死亡,後臺線程會自動死亡,JVM的來及回收機制就是典型的後臺線程,下面我們來看看實例。
public class DaemonTest extends Thread{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println(getName()+" "+i);
        }
    }
    
    public static void main(String[] args){
        DaemonTest t= new DaemonTest();
        //將此線程設置爲後臺線程
        t.setDaemon(true);
        t.start();
        
        for(int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+" "+i);
        }
    }
}

解析:今天我們分享的這個線程很有意思,大家自己根據穩重的代碼運行就行(PS 大家可以修改一些代碼中的i的值並運行,看看運行結果)。
(1)在這裏我首先設置main方法裏面i的值爲10 ,DaemonTest子線程都沒有來得及運行主線程就結束了。

(2)我設置方法main裏面的i爲2000,後臺線程先執行完,這個因爲前臺線程的循環次數遠大於後臺線程循環次數,所以會出現這樣的結果。後臺線程已經結束,前臺線程還在進行。

(3)我設置main 方法中的i爲100.,在main執行過程中後臺線程就搶奪了資源開始運行,在主線程結束之後,後臺進程還運行了一部分。這是因爲前臺進程死亡後,JVM還需要通知後臺進程死亡。從後臺進程接受指令到他做出相應需要一定的時間,所以後臺線程仍然能夠執行一部分。
      

總結:
       線程的控制是很有意思的一件事情,因爲線程裝入CPU的順序是不定的,所以執行出來的結果也不相同,這就是併發程序的魅力,我們要做的是讓我們的代碼更好的符合我們的想法去實現。很高興和大家分享。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章