Я использую 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], но не смогло его остановить. Это очень вероятно, чтобы создать утечку памяти.
Можно ли игнорировать этот журнал? Или я что-то не так делаю?
Спасибо