最近我修复了Tomcat Shutdown中的一个错误。这是因为当Tomcat尝试关闭时,有些线程挂在那里。
我所做的与此类似:
public Thread newThread(Runnable r) {
Thread t = new Thread(r, "RxComputationThreadPool-" + counter.incrementAndGet());
t.setDaemon(true);
return t;
}
我在其他情况下发现了类似的问题:
任何人都可以帮忙解释使用setDaemon的优缺点吗?
答案 0 :(得分:3)
setDaemon(true)
将特定线程标记为守护进程。守护程序线程是一种特殊的线程--JVM不必等到它们完成才能关闭(通过完成main()
方法)。
您可能希望守护程序线程执行非关键清理工作,例如收集一些统计信息。
很难说它的优点和缺点是什么,但我尽力解释它的想法和可能的用法。