В моем 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.
Я понимаю, что мне нужно выключить ExecutorService, прежде чем отключить tomcat. Soms SO thread уже говорит об этом, но я не мог найти чистый способ справиться с этим.
Должен ли я использовать ShutdownHook
как предложено @Tim-bender в Изящное завершение потоков и исполнителей? Или я должен использовать CachedThreadPool?