En mi aplicación web, creé un servicio que usa un ExecutorService
con ThreadPool de tamaño fijo. Reutilizo el mismo ExecutorService
durante toda la vida útil de la aplicación.Shutdown ExecutorService correctamente en webapp?
private static ExecutorService pool = Executors.newFixedThreadPool(8);
Todo se ejecuta en Tomcat que me da el siguiente error al shuting abajo:
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.
Me doy cuenta que necesito para apagar el ExecutorService antes shuting Tomcat hacia abajo. El hilo Soms SO ya habla de esto, pero no pude encontrar una manera limpia de manejar esto.
¿Debo usar un ShutdownHook
como lo sugirió @ Tim-bender en Graceful shutdown of threads and executor? ¿O debería usar un CachedThreadPool en su lugar?
Exactamente lo que necesitaba saber –