我向Executors.newFixedThreadPool(3)
提交了一些任务,它们都运行并成功完成。然后,我打电话ExecutorService终止,但JVM没有
executorService.shutdown();
executorService.awaitTermination(2000, TimeUnit.MILLISECONDS);
通过
executorService.isShutdown()
executorService.isTerminated()
检查,并获得两次真正的回来。主线程退出,但JVM保持活动状态。没有AWT线程或类似的线程,我只能看到3个线程池,DestroyJavaVM
和com.google.inject.internal.util.$Finalizer
。
终结者可能是主要的嫌疑人,如果它不是deamon线程。我暂停两个线程得到这个图像
实际上,我很期待池中的线程将早已不复存在,因为isTerminated == true
。任何想法,他们都在等待谁?
您确定您没有其他服务以某种方式运行吗?我看到这是池-2。 – dcernahoschi 2014-09-20 09:40:25
@dcernahoschi我笨了......我忘了添加['@ Singleton'](http://google-guice.googlecode.com/git-history/3.0/javadoc/com/google/inject/Singleton.html)到我的服务包装。所以我关闭了一个游泳池,另一个停留了。也许我应该删除这些问题,但是,其他人可能会从中获利。请注意添加答案? – maaartinus 2014-09-20 16:06:39