守护线程(Daemon) 是比较特殊的一种低级别线程,一般被用于在后台为其它线程提供服务。比如当用户编写Word文档时,不断进行拼写检查的线程就是个守护线程,它不会影响用户编辑文件。典型的守护线程例子是JVM中的系统资源自动回收线程,它始终在低级别的状态中运行,不需要占用大量的系统资源,多用于实时监控和管理系统中的可回收资源。
可以通过调用方法 isDaemon() 来判断一个线程是否是守护线程,而将一个用户线程设置为守护线程的方法是在线程对象创建之前调用线程对象的setDaemon(boolean on)方法。true为守护线程,false为用户线程。
//filename:SimpleDaemons.java
public class SimpleDaemons extends Thread {
public SimpleDaemons() {
setDaemon(true); //必须在start()方法之前调用
start();
}
public void run() {
while (true) {
try {
System.out.println("I am a daemon " + Thread.currentThread().getName()); //打印一句话
sleep(100); //睡眠一段时间
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new SimpleDaemons();
}
}
|
|