这似乎发生在我的应用程序中,但几乎可以肯定是我的Maven/JUnit测试用例环境中发生的其他事情的结果(关于我甚至还没有完全阅读的代码-维护一个外部项目)。以下代码按需工作,TPE不需要关闭:
final ScheduledThreadPoolExecutor pool = new ScheduledThreadPoolExecutor(1, new ThreadFactory() {
@Override
public Thread newThread(Runnable task) {
Thread thread = new Thread(task, replenisherThreadName);
thread.setDaemon(true);
return thread;
}
});
如果它真的是一个守护进程线程,那么它就不能保持应用程序的活力。您的问题在其他地方(或者它不是真正的守护进程线程)。
不确定这些守护进程线程是通过您的程序创建的,但理想情况下,我们应该在完成工作后尝试关闭执行器服务。原因是,我在许多应用程序中观察到,当这些服务没有正确关闭时;线程数量不断增加,这使得应用程序不稳定。