即使在线程关闭后,活动线程计数也不会减少



在下面的代码中,Thread.activeCount(( 总是返回 2,即使执行器中的线程在 5 秒后终止。

public class MainLoop {
    public static void main(String[] args) throws Exception {
        ExecutorService executor = Executors.newFixedThreadPool(12);
        executor.submit(new Callable<Void>() {
            public Void call() throws Exception {
                Thread.sleep(5000);
                return null;
            }
        });
        while (true) {
            System.out.println(Thread.activeCount());
            Thread.sleep(1000);
        }
    }
}

我希望 Thread.activeCount(( 在 5 秒后返回 1。为什么它总是返回 2 ?

请参阅 newFixedThreadPool 的文档。https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(整数(

在任何时候,大多数 nThreads 线程都将是活动的处理任务。池中的线程将一直存在,直到显式关闭。

将可调用对象提交到此执行器后,它将被池的一个线程刺破和处理。完成此执行后,线程将闲置在池中等待下一个可调用对象。

相关内容

  • 没有找到相关文章

最新更新