ExecutorService auto-close
Use try-with-resources for automatic executor shutdown.
Code Comparison
✕ 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
Why the modern way wins
Auto cleanup
Shutdown happens automatically when the block exits.
No leaks
Executor always shuts down, even if exceptions occur.
Familiar pattern
Same try-with-resources used for files, connections, etc.
Old Approach
Manual Shutdown
Modern Approach
try-with-resources
Since JDK
19
Difficulty
beginner
JDK Support
ExecutorService auto-close
Available
Widely available since JDK 19 (Sept 2022)
How it works
Since Java 19, ExecutorService implements AutoCloseable. The close() method calls shutdown() and waits for tasks to complete. No more manual try/finally shutdown patterns.