Concurrency Начинающий

Использование try-with-resources для автоматического завершения работы исполнителя.

✕ 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
Заметили проблему в этом коде? Сообщите нам.
🧹

Автоматическая очистка

Завершение работы происходит автоматически при выходе из блока.

🛡️

Нет утечек

Исполнитель всегда завершает работу, даже при исключениях.

📖

Знакомый паттерн

Тот же try-with-resources, что и для файлов, соединений и т.д.

Старый подход
Ручное завершение работы
Современный подход
try-with-resources
Начиная с JDK
19
Сложность
Начинающий
Автоматическое закрытие ExecutorService
Доступно

Широко доступно с JDK 19 (сент. 2022)

Начиная с Java 19, ExecutorService реализует AutoCloseable. Метод close() вызывает shutdown() и ожидает завершения задач. Больше не нужны ручные паттерны try/finally для завершения работы.