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

在Java中,線程可以分為兩種類型:用戶線程和守護線程。用戶線程是主線程的子線程,當主線程結束時,用戶線程也會結束。守護線程是一種特殊的線程,它是在后臺運行的,當所有用戶線程結束時,守護線程也會隨之結束。
下面是一個簡單的代碼演示,用于說明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)方法將守護線程設置為守護線程,這意味著當所有用戶線程退出時,它也會退出。
運行上面的代碼,我們將得到以下輸出:
從輸出結果可以看出,用戶線程在5秒后完成并退出,主線程也在啟動用戶線程和守護線程后立即結束。但是,守護線程在后臺無限循環(huán)并打印消息,直到所有用戶線程都結束時才會退出。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19