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

Java 即使在线程关闭后,活动线程计数也不会减少,java,multithreading,executorservice,Java,Multithreading,Executorservice,在下面的代码中,即使executor中的线程在5秒后终止,Thread.activeCount始终返回2 public class MainLoop { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newFixedThreadPool(12); executor.submit(new Callable<Vo

在下面的代码中,即使executor中的线程在5秒后终止,Thread.activeCount始终返回2

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的文档。

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

在一个可调用文件提交给这个执行器之后,它将被池中的一个线程触发和处理。
完成此执行后,线程将在池中处于空闲状态,等待下一个可调用线程。

如果您不喜欢,请使用非固定线程池。它们允许您配置允许空闲线程的时间长度。您应该按照说明调用shutdown方法