Cierre automático de ExecutorService
Usa try-with-resources para el cierre automático del executor.
Comparación de Código
✕ Java 8
ExecutorService exec =
Executors.newCachedThreadPool();
try {
exec.submit(task);
} finally {
exec.shutdown();
exec.awaitTermination(
1, TimeUnit.MINUTES);
}
✓ Java 19+
try (var exec =
Executors.newCachedThreadPool()) {
exec.submit(task);
}
// auto shutdown + await on close
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Limpieza automática
El cierre ocurre automáticamente al salir del bloque.
Sin fugas
El executor siempre se cierra, incluso si ocurren excepciones.
Patrón familiar
El mismo try-with-resources usado para archivos, conexiones, etc.
Enfoque Antiguo
Cierre manual
Enfoque Moderno
try-with-resources
Desde JDK
19
Dificultad
Principiante
Soporte JDK
Cierre automático de ExecutorService
Disponible
Ampliamente disponible desde JDK 19 (sept. 2022)
Cómo funciona
Desde Java 19, ExecutorService implementa AutoCloseable. El método close() llama a shutdown() y espera a que las tareas terminen. Se acabaron los patrones manuales de try/finally para el cierre.
Documentación Relacionada