我向 Executors.newFixedThreadPool(3)
提交了一些任务,它们都运行并成功完成。然后我打电话
executorService.shutdown();
executorService.awaitTermination(2000, TimeUnit.MILLISECONDS);
检查通过
executorService.isShutdown()
executorService.isTerminated()
并获得两次真实返回。主线程退出,但 JVM 保持 Activity 状态。没有 AWT 线程或类似线程,我只能看到 3 个池线程,DestroyJavaVM
和 com.google.inject.internal.util.$Finalizer
。
如果 Finalizer 不是守护线程,它可能是主要嫌疑人。我暂停了两个线程来获取这张图片
实际上,由于 isTerminated == true
,我希望池线程早就消失了。知道他们都在等谁吗?
最佳答案
从您的调试图像看来,您的服务并不孤单,因为它名为 pool-2
。因此,您可能还有另一个 ExecutorService
仍在作为 pool-1
运行,以防止 JVM 退出。
关于java - ExecutorService 终止,但 JVM 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25946103/