如何創建一個守護線程?

本文風格:代碼+結果+總結註釋

獲取源代碼獲取更好的閱讀體驗:守護線程的創建

 

package com.sakura.rain;

/**
 * @ClassName Main001
 * @function [爲什麼會需要守護線程]
 * @notice 持久化操作不做業務上處理
 * @Author lcz
 * @Date 2020/06/24 23:06
 */
public class Main001 {
    public static void main(String[] args) {

        /*代碼段*/
        ThreadDemo threadDemo = new ThreadDemo();
        threadDemo.start();

        Thread thread = new Thread(() -> {
            for (;;) {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------");

            }
        });
        thread.setDaemon(true);
        thread.start();

        /*
        程序執行結果:
        1592879626664
        1592879627664
        1592879628665
        1592879629666
        1592879630666
        1592879631666
        ------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------
        1592879632666
        1592879633667
        1592879634667
        1592879635667
        1592879636667
        ------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------
        1592879637668
        1592879638668
        1592879639669
        1592879640670
        1592879641670
        ------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------
        1592879642670
        1592879643671
        1592879644672
        1592879645672
        1592879646672
        ------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------
        1592879647672
        1592879648672
        1592879649673
        1592879650673
        1592879651673
        ------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------
        1592879652674
        1592879653674
        1592879654675
        1592879655675
        1592879656675
        ------這個線程時不時會打印一些信息[比如定時查看系統內存,執行gc動作等]------
        * */


        /*
        * 總結說明:
        * 系統在正常運行狀態的時候執行一些列業務操作或是其他的內容。
        *
        * 輔助需要一個線程執行某些額外的動作,此線程存活的依據或者是執行動作的條件是系統中還有其他線程正在執行
        * 要求在系統中其他任務結束之後此線程便不再運行,人爲管理這種進程並不合理。
        *
        * 因此設置守護線程,當其他線程結束之後,此線程便隨之結束
        * */
    }
}


class ThreadDemo extends Thread {
    @Override
    public void run() {
        int count = 0;
        while (count <= 30) {
            count = count + 1;
            System.out.println(System.currentTimeMillis());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

代碼中的言辭和觀點都是個人理解,不足之處還望指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章