Concurrency Experte

Den Lebenszyklus nebenläufiger Aufgaben als eine einzige Arbeitseinheit verwalten.

✕ Java 8
ExecutorService exec =
    Executors.newFixedThreadPool(2);
Future<User> u = exec.submit(this::fetchUser);
Future<Order> o = exec.submit(this::fetchOrder);
try {
    return combine(u.get(), o.get());
} finally { exec.shutdown(); }
✓ Java 25 (Preview)
try (var scope = new StructuredTaskScope
        .ShutdownOnFailure()) {
    var u = scope.fork(this::fetchUser);
    var o = scope.fork(this::fetchOrder);
    scope.join().throwIfFailed();
    return combine(u.get(), o.get());
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🛡️

Keine Thread-Lecks

Alle verzweigten Aufgaben werden abgeschlossen, bevor der Scope geschlossen wird.

Schnelles Versagen

ShutdownOnFailure bricht Geschwister-Aufgaben ab, wenn eine fehlschlägt.

📐

Klare Struktur

Der Aufgaben-Lebenszyklus entspricht dem lexikalischen Scope im Code.

Alter Ansatz
Manueller Thread-Lebenszyklus
Moderner Ansatz
StructuredTaskScope
Seit JDK
25
Schwierigkeitsgrad
Experte
Strukturierte Nebenläufigkeit
Vorschau

Preview in JDK 25 (fünfte Preview, JEP 505). Erfordert --enable-preview.

Strukturierte Nebenläufigkeit behandelt eine Gruppe nebenläufiger Aufgaben als eine einzige Operation. Schlägt eine Teilaufgabe fehl, werden die anderen abgebrochen. Der Scope stellt sicher, dass keine Threads verloren gehen, und schafft klare Eltern-Kind-Beziehungen.

Teilen 𝕏 🦋 in