Estoy usando el pool de subprocesos en caché ExecutorService para ejecutar algunas tareas de fondo asincrónicas. He proporcionado mi ThreadFactory que entrega hilos al ExecutorService (siempre que los necesite). Mi comprensión del grupo de subprocesos almacenados en caché es que una vez que el subproceso está inactivo durante 60 segundos, el servicio Executor lo interrumpe.Java ExecutorService callback on thread terminte
Quiero realizar una limpieza de estado cuando mi thread está por terminar. ¿Cuál es la mejor manera de lograr esto? El ExecutorService no proporciona fácilmente ganchos en el ciclo de vida del hilo.
No quiero cerrar mi ExecutorService - útil para ejecutar tareas como y cuando vienen.
ExecutorService executor = Executors.newCachedThreadPool(new MyThreadFactory());
// Do some work
executor.submit(new MyCallable());
// Need a way for the ExecutorService to notify me when it is about to
// terminate my thread - need to perform some cleanup
Gracias,
Shreyas
+1 por pregunta interesante. Me pregunto si un finalizador funcionaría. – Rom1
@ Rom1, alguien había publicado una respuesta sugiriendo implementar 'finalizar'. Creo que es una lástima que lo borraron. Lo que debe tenerse en cuenta es que usar 'finalize' significa incurrir en algunos hits de rendimiento en GC y JVM. –
Intenté usar el enfoque de finalización pero no funcionó. El método no fue llamado. –