创建守护程序线程的ThreadPoolExecutors是否需要关闭?

时间:2013-02-20 01:07:34

标签: java threadpool daemon shutdown

这似乎发生在我的应用程序中,但几乎可以肯定是我的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;
        }
    });

2 个答案:

答案 0 :(得分:1)

如果它确实是一个守护程序线程,那么它不会使您的应用程序保持活动状态。你的问题出在其他地方(或者它不是真的一个守护程序线程)。

答案 1 :(得分:0)

不确定这些守护程序线程是通过您的程序创建的,但理想情况下我们应该在完成工作后尝试关闭执行程序服务。原因是,我在许多应用程序中都观察到,当这些服务未正常关闭时;线程数继续堆积,这使应用程序不稳定。