更新時間:2023-03-03 來源:黑馬程序員 瀏覽量:
在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é)束時才會退出。