Fechamento automático do ExecutorService
Use try-with-resources para encerramento automático do executor.
Comparação 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
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Limpeza automática
O encerramento acontece automaticamente ao sair do bloco.
Sem vazamentos
O executor sempre é encerrado, mesmo se ocorrerem exceções.
Padrão familiar
Mesmo try-with-resources usado para arquivos, conexões, etc.
Abordagem Antiga
Encerramento manual
Abordagem Moderna
try-with-resources
Desde o JDK
19
Dificuldade
Iniciante
Suporte JDK
Fechamento automático do ExecutorService
Disponível
Amplamente disponível desde o JDK 19 (setembro de 2022)
Como funciona
Desde o Java 19, ExecutorService implementa AutoCloseable. O método close() chama shutdown() e aguarda a conclusão das tarefas. Chega de padrões manuais de try/finally para encerramento.
Documentação Relacionada