Java前台線程與後台線程

來源:互聯網
上載者:User
Java前台線程與後台線程

上一篇部落格在main()方法中,建立並啟動了四個新的線程後,main()方法中的代碼執行完畢,此時,方法會結束,main線程也就隨之結束了

通過程式的運行結果可以看出,雖然,main線程結束了,但是整個Java程式卻沒有隨之結束,仍然在執行售票的代碼

對於Java程式來說,只要還有一個前台線程在運行,這個進程就不會結束,如果一個進程中,只有後台線程在運行,這個進程就會結束 前台線程與後台線程

前台線程、後台線程是一種相對的概念
新建立的線程,預設都是前台線程
如果,某個線程對象在啟動之前,調用了setDaemon(true)語句,這個線程就變成了一個後台線程
樣本,Example06.java

// 建立DamonThread類,實現Runnable介面class DamonThread implements Runnable{    // 實現介面中的run()方法    public void run(){        while(true){            System.out.println(Thread.currentThread().getName()+"---is running.");        }    }}public class Example06{    public static void main(String[] args){        System.out.println("main線程是後台線程嗎。"+Thread.currentThread().isDaemon());        // 建立一個DamonThread對象dt        // 建立線程t,共用dt資源        DamonThread dt=new DamonThread();        Thread t=new Thread(dt,"後台線程");        System.out.println("t線程預設是後台線程嗎。"+t.isDaemon());        // 將線程t,設定為後台線程        // 調用start()方法,開啟線程t        t.setDaemon(true);        t.start();        for(int i=0;i<10;i++){            System.out.println(i);        }    }}

編譯運行

示範了一個後台線程結束的過程
當開啟線程t之後,會執行死迴圈中的列印語句,我們將線程t設定為後台線程後,當前台線程死亡後,JVM會通知後台線程

由於,後台線程從接受指令,到做出響應,需要一定的時間,因此,列印了幾次後台線程—is running語句後,後台線程也結束了
因此,說明後台線程在運行時,進程就結束了 設定後台線程

將某個線程設定為後台線程,必須在該線程啟動之前
也就是說,setDaemon()方法必須在start()方法之前調用,否則,會引發IllegalTreadStateException異常

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.