0Pricing
Java Academy · Lektion

Das Modell der strukturierten Nebenläufigkeit

Zusammengehörige Aufgaben als Einheit behandeln

Das Modell der strukturierten Nebenläufigkeit ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist strukturierte Nebenläufigkeit

Strukturierte Nebenläufigkeit (JEP 453, Vorschau) behandelt eine Gruppe zusammengehöriger nebenläufiger Aufgaben als eine einzige Arbeitseinheit.

Wenn die übergeordnete Aufgabe in Unteraufgaben aufgeteilt wird, müssen alle Unteraufgaben abgeschlossen sein, bevor die übergeordnete Aufgabe fortfährt – ähnlich wie bei einem Block-Scope in gewöhnlichem Code.

Welches Problem sie löst

Bei der direkten Verwendung von Executorn kann eine gestartete Aufgabe länger als ihr Ersteller laufen, Ressourcen verlieren oder vergessen werden. Fehler in einem Zweig bleiben möglicherweise unbemerkt, während andere Zweige weiterlaufen.

Das führt zu Thread-Leaks, verwaisten Aufgaben und einer schwer nachvollziehbaren Fehlerbehandlung.

Aufgaben als Baum

Strukturierte Nebenläufigkeit erzwingt eine Eltern-Kind-Beziehung. Unteraufgaben bilden einen Baum, dessen Wurzel die Aufgabe ist, von der sie gestartet wurden.

  • Eine Unteraufgabe kann ihren übergeordneten Scope nicht überleben
  • Die übergeordnete Aufgabe wartet, bis alle untergeordneten Aufgaben abgeschlossen sind
  • Die Abbruchanforderung wird im Baum nach unten weitergegeben

Sequenziellen Code nachbilden

Die zentrale Idee ist, dass nebenläufiger Code wie sequenzieller Code lesbar sein sollte. Ein Scope wird geöffnet, die Arbeit wird aufgeteilt, und der Scope wird erst geschlossen, wenn alles zusammengeführt wurde.

Dadurch werden Lebensdauern offensichtlich und Fehler leichter nachvollziehbar.

Der alte unstrukturierte Ansatz

Hier sehen Sie einen vertrauten, aber unstrukturierten Ansatz mit einem einfachen Executor. Er funktioniert, aber nichts garantiert, dass die beiden Futures dieselbe koordinierte Lebensdauer haben.

import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) throws Exception {
        try (ExecutorService exec = Executors.newVirtualThreadPerTaskExecutor()) {
            Future<String> user = exec.submit(() -> "Ada");
            Future<Integer> order = exec.submit(() -> 7);
            System.out.println(user.get() + " has " + order.get() + " orders");
        }
    }
}

Warum Koordination wichtig ist

Wenn im vorherigen Beispiel das Abrufen des Benutzers fehlschlägt, läuft die Aufgabe zum Abrufen der Bestellung nutzlos weiter. Sie müssen sie manuell abbrechen und Ausnahmen aus jedem Aufruf von get() behandeln.

Strukturierte Nebenläufigkeit automatisiert diese Koordination.

Status als Vorschau

Strukturierte Nebenläufigkeit wird als Vorschau-API im Paket java.util.concurrent ausgeliefert. Für ihre Verwendung müssen Sie mit --enable-preview kompilieren und ausführen.

Die zentrale Klasse ist StructuredTaskScope, die in der nächsten Lektion behandelt wird.

Lebensdauergarantien

Innerhalb eines strukturierten Scopes gilt:

  • Alle Teilaufgaben werden abgeschlossen, schlagen fehl oder werden abgebrochen, bevor der Scope verlassen wird
  • Keine Teilaufgabe läuft im Hintergrund weiter
  • Der Aufruf-Stack bildet die tatsächliche Aufgabenhierarchie in Thread-Dumps ab

Vorteil für die Beobachtbarkeit

Da der Baum der Teilaufgaben explizit ist, können JDK-Tools ihn anzeigen. Ein Thread-Dump gruppiert Teilaufgaben unter ihrem übergeordneten Scope. Dadurch wird die Diagnose deutlich übersichtlicher als bei verstreuten Pool-Threads.

Funktioniert gut mit virtuellen Threads

Jede Teilaufgabe in einem strukturierten Scope wird standardmäßig in ihrem eigenen virtuellen Thread ausgeführt. Die geringen Kosten virtueller Threads machen es praktisch, die Arbeit auf viele Teilaufgaben zu verteilen.

Die beiden Funktionen wurden für die Zusammenarbeit entwickelt.

Denkmodell

Stellen Sie sich einen strukturierten Scope wie einen try-with-resources-Block für Nebenläufigkeit vor: Sie öffnen ihn, starten Arbeit mit fork, warten mit join und schließen ihn anschließend. Die schließende Klammer garantiert, dass nichts mehr ausgeführt wird.

Kurzer Test

Testen Sie Ihr Verständnis des Grundprinzips.

Zusammenfassung

Sie haben das Modell der strukturierten Nebenläufigkeit kennengelernt:

  • Zusammengehörige Aufgaben bilden einen Baum, der an die Lebensdauer eines Scopes gebunden ist
  • Nebenläufiger Code liest sich wie sequenzieller Code
  • Es handelt sich um eine Preview-API, für die --enable-preview erforderlich ist
  • Sie lässt sich natürlich mit virtuellen Threads kombinieren

Als Nächstes folgt die StructuredTaskScope-API selbst.

Häufig gestellte Fragen

Ist die Lektion „Das Modell der strukturierten Nebenläufigkeit“ kostenlos?

Ja — der vollständige Text von „Das Modell der strukturierten Nebenläufigkeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Das Modell der strukturierten Nebenläufigkeit“?

Zusammengehörige Aufgaben als Einheit behandeln Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Java Academy zu starten?

Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Das Modell der strukturierten Nebenläufigkeit“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?

Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Das Modell der strukturierten Nebenläufigkeit
  2. StructuredTaskScope
  3. Beenden bei Fehler und Erfolg
  4. Fehlerbehandlung und Abbruch
← Zurück zu Java Academy