首頁常見問題正文

java中的守護線程與用戶線程

更新時間:2023-03-03 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Java中,線程可以分為兩種類型:用戶線程和守護線程。用戶線程是主線程的子線程,當主線程結(jié)束時,用戶線程也會結(jié)束。守護線程是一種特殊的線程,它是在后臺運行的,當所有用戶線程結(jié)束時,守護線程也會隨之結(jié)束。

  下面是一個簡單的代碼演示,用于說明Java中守護線程和用戶線程的區(qū)別:

public class ThreadDemo {
    public static void main(String[] args) {
        Thread userThread = new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(5000);
                    System.out.println("用戶線程執(zhí)行完畢");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        userThread.start();

        Thread daemonThread = new Thread(new Runnable() {
            public void run() {
                while (true) {
                    System.out.println("守護線程正在運行");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        daemonThread.setDaemon(true);
        daemonThread.start();

        System.out.println("主線程執(zhí)行完畢");
    }
}

  在這個例子中,我們創(chuàng)建了一個用戶線程和一個守護線程,并且在主線程中啟動了它們。用戶線程將在5秒后打印一條消息,并退出。守護線程將在后臺無限循環(huán)打印一條消息,并且每隔1秒鐘暫停一次。

  注意,我們使用setDaemon(true)方法將守護線程設(shè)置為守護線程,這意味著當所有用戶線程退出時,它也會退出。

  運行上面的代碼,我們將得到以下輸出:

  從輸出結(jié)果可以看出,用戶線程在5秒后完成并退出,主線程也在啟動用戶線程和守護線程后立即結(jié)束。但是,守護線程在后臺無限循環(huán)并打印消息,直到所有用戶線程都結(jié)束時才會退出。

分享到:
在線咨詢 我要報名
和我們在線交談!