Daemon 线程是一种支持性线程,例如:web服务器中的Servlet,容器启动时后台初始化一个服务线程,即调度线程,负责处理http请求,然后每个请求过来调度线程从线程池中取出一个工作者线程来处理该请求,从而实现并发控制的目的。因此它的主要作用是作为程序后台调度及支持性服务类工作,这也意味着当java虚拟机中不存在非Damemon线程时,java虚拟机将会退出,Daemon线程失去了服务对象也就立即结束了。
public class Damemon {
static class DamemonRunner implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1000);
}catch(Exception e) {
}finally {
System.out.println("demonThread finally run..");
}
}
public static void main(String[] args) {
Thread thread = new Thread(new DamemonRunner(),"demonThread");
thread.setDaemon(true);
thread.start();
}
}
}
上述代码并不会执行fianlly里的内容,因为main线程结束,无非daemon线程,同是demonThread 也不会休眠1ms,而是立即终止;
——————参考:《java 并发编程的艺术》