有一種線程,它是在后臺(tái)運(yùn)行的,它的任務(wù)是為其他的線程提供服務(wù),這種線程被稱為“后臺(tái)線程”(Daemon Thread),又稱為“守護(hù)線程”。
典型的后臺(tái)線程是定時(shí)器”Timer"線程,他負(fù)責(zé)將固定的時(shí)間間隔發(fā)送給其他的線程。
后臺(tái)線程經(jīng)常用于任務(wù)結(jié)束時(shí)的善后處理。另外,后臺(tái)線程的優(yōu)先級(jí)要比其他的線程優(yōu)先級(jí)低。
和后臺(tái)線程相比,一般的線程稱為“用戶線程”。如果一個(gè)應(yīng)用中只有后臺(tái)線程在運(yùn)行,JVM將退出該應(yīng)用程序。
可以通過setDaemon(boolean d)來將一個(gè)普通的線程設(shè)置為后臺(tái)線程。用方法isDaemon()可以用于測試特定的線程是否為后臺(tái)線程。
package com.liujl.thread;public class DaemonThread extends Thread{ @Override public void run() { while(true){ System.out.PRintln("DaemonThread is running..."); } }; public static void main(String[] args) { DaemonThread dt=new DaemonThread(); // dt.setDaemon(true); dt.start(); } /** * dt.setDaemon(true),設(shè)置了dt線程為守護(hù)線程,這時(shí)調(diào)用start(); * 在dt這個(gè)線程執(zhí)行一段時(shí)間后將會(huì)自動(dòng)退出,這是因?yàn)榫€程調(diào)度程序在監(jiān)測到只有 * 一個(gè)后臺(tái)線程在運(yùn)行的時(shí)候,它就終止這個(gè)引用程序的運(yùn)行。 * * 讀者可以把第13行的代碼去掉,再次運(yùn)行這個(gè)引用,此時(shí)這個(gè)應(yīng)用程序?qū)⒂罒o止境的運(yùn)行下去。 */} 新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注