ForkJoin Idee
ForkJoinPool zerlegt Aufgaben rekursiv (fork) und kombiniert Ergebnisse (join). Gut für divide-and-conquer wie paralleles Sortieren.
Muster kennen, nicht jedes API-Detail.
Work-Stealing-Pool: ForkJoinPool [1].
Wo gebraucht
Parallel Streams, rekursive Parallelisierung von Divide-and-Conquer, Work-Stealing in der JVM. Passt zu Merge-Sort-artigen Aufgaben auf Mehrkernmaschinen.
Vertiefung
Das ForkJoin-Framework zerlegt eine grosse Berechnung in kleinere Tasks. fork stellt eine Teilaufgabe zur möglichen parallelen Bearbeitung bereit, join wartet auf ihr Ergebnis. Kleine Aufgaben werden direkt berechnet, damit Verwaltungsaufwand und zu feine Aufteilung begrenzt bleiben.
Worker verwenden Work Stealing: Ein untätiger Worker übernimmt Aufgaben aus der Warteschlange eines ausgelasteten Workers. Das balanciert unregelmässige Teilbäume dynamisch. Gut geeignet sind weitgehend unabhängige, CPU-lastige Berechnungen mit überschaubaren Ergebniskombinationen.
Schwierigkeitsstufen
- Basisfall und Zerlegungsschwelle einer Task festlegen.
- Einen Teil direkt berechnen und einen anderen parallel ausführen.
- Granularität und Lastverteilung für reale Kosten abstimmen.
Fallstricke
Blockierende I/O innerhalb vieler Tasks kann den Worker-Pool ausbremsen. Eine zu kleine Schwelle erzeugt mehr Schedulingkosten als Rechengewinn, eine zu grosse lässt Parallelität ungenutzt.
Sources
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Beginner
- Completed: 0 users