【发布时间】:2012-04-13 09:49:50
【问题描述】:
我正在使用ScheduledExecutorService 运行预定线程。
我实现了ServletContextListener.contextDestroyed 并调用了ScheduledExecutorService.shutdownNow 和awaitTermination。
这是一个例子:
@Override
public void contextDestroyed(ServletContextEvent servletcontextevent) {
pool.shutdownNow(); // Disable new tasks from being submitted
try {
// Wait a while for existing tasks to terminate
if (!pool.awaitTermination(50, TimeUnit.SECONDS)) {
pool.shutdownNow(); // Cancel currently executing tasks
System.err.println("Pool did not terminate");
}
} catch (InterruptedException ie) {
// (Re-)Cancel if current thread also interrupted
pool.shutdownNow();
// Preserve interrupt status
Thread.currentThread().interrupt();
}
}
不过,我从 Tomcat 7 收到以下错误:
严重:Web 应用程序 [/servlet] 似乎已启动 线程名为 [Timer-0] 但未能停止它。这很有可能 造成内存泄漏。
可以忽略此日志吗?还是我做错了什么?
谢谢
【问题讨论】:
-
我的意思是,我的想法是:您进行清理的责任在哪里停止?这里还能做什么?用消防水带打箱子?说真的,我的意思是看起来你正在做你能做的所有事情......我会忽略这个错误。
-
你可以参考我之前的帖子 :) stackoverflow.com/questions/9926356/…
标签: java tomcat7 executorservice