在我的 webapp 中,我创建了一个ExecutorService
使用固定大小的 ThreadPool 的服务。我ExecutorService
在整个应用程序生命周期中重复使用相同的内容。
private static ExecutorService pool = Executors.newFixedThreadPool(8);
一切都在 Tomcat 中运行,这在关闭时给了我以下错误:
appears to have started a thread named [pool-1-thread-1] but has failed to stop it. This is very likely to create a memory leak.
我确实意识到在关闭 tomcat 之前我需要关闭 ExecutorService 。Soms SO线程已经谈到了这个,但我找不到一个干净的方法来处理这个。
我应该在优雅关闭线程和执行ShutdownHook
程序中使用建议的@Tim-bender吗?或者我应该改用 CachedThreadPool 吗?