Я использую 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:
СЕРЬЕЗНАЯ: веб-приложение [/servlet], похоже, запустило поток с именем [Timer-0], но не смог его остановить. это очень вероятно для создания утечки памяти.
Можно ли игнорировать этот журнал? Или я что-то не так делаю?
Спасибо