ExecutorService automatisch schließen
try-with-resources für das automatische Herunterfahren des Executors verwenden.
Code-Vergleich
✕ 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
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Automatische Bereinigung
Das Herunterfahren erfolgt automatisch beim Verlassen des Blocks.
Keine Lecks
Der Executor wird immer heruntergefahren, auch bei Ausnahmen.
Bekanntes Muster
Dasselbe try-with-resources wie für Dateien, Verbindungen usw.
Alter Ansatz
Manuelles Herunterfahren
Moderner Ansatz
try-with-resources
Seit JDK
19
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
ExecutorService automatisch schließen
Verfügbar
Weitgehend verfügbar seit JDK 19 (Sept. 2022)
Wie es funktioniert
Seit Java 19 implementiert ExecutorService AutoCloseable. Die Methode close() ruft shutdown() auf und wartet auf den Abschluss der Aufgaben. Keine manuellen try/finally-Shutdown-Muster mehr.
Zugehörige Dokumentation