capypad
0 Tage Serie
java / expert
Snippet

Strukturierte Nebenläufigkeit mit StructuredTaskScope

Structured Task Scope (Preview in Java 21+) behandelt Gruppen zusammengehöriger Aufgaben, die in verschiedenen Threads laufen, als eine einzige Arbeitseinheit. ShutdownOnFailure stellt sicher, dass beim Fehlschlagen eines Subtasks alle anderen verwandten virtuellen Threads automatisch abgebrochen werden, was 'verwaiste' Threads verhindert und die Observability verbessert.

snippet.java
java
1
2
3
4
5
6
7
8
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
Supplier<String> user = scope.fork(() -> fetchUser(id));
Supplier<Integer> order = scope.fork(() -> fetchOrder(id));
 
scope.join().throwIfFailed();
 
return new Dashboard(user.get(), order.get());
}
Erklärung
1
new StructuredTaskScope.ShutdownOnFailure()
Erstellt einen Scope, der alle Forks beendet, wenn ein einzelner Fork fehlschlägt.
2
scope.fork(() -> ...)
Startet einen Subtask in einem neuen virtuellen Thread innerhalb des aktuellen Scopes.
3
scope.join().throwIfFailed()
Wartet auf den Abschluss aller Forks und gibt die erste aufgetretene Exception weiter.