|
Ueb W8
|
Sie haben letzte Woche mit Hilfe der klassichen Java Synchronisationsmechanismen (synchronized, wait(), notify()) ein Formel 1 Rennen simuliert. Nun sollen Sie das noch einmal mit den neu erlernten Mechanismen aus java.util.concurrent implementieren.
Verwenden Sie nur CountingLatch um das Rennen zu synchronisieren.
Schreiben Sie dazu eine Unterklasse zu AbstractRace: RaceWithLatches
Tipp: beginnen Sie zunächst damit das StartingGridReady mit einem CountingLatch, das die Autos zählt, zu sichern. Wenn Sie den Zähler eins höher initialisieren, können Sie damit den Start auslösen. Alternativ, können Sie ein separates CountingLatch, das nur bis 1 zählt für den Start benutzen.
Verwenden Sie nur CyclicBarrier um das Rennen zu synchronisieren.
Schreiben Sie dazu eine Unterklasse zu AbstractRace: RaceWithBarrier Als Zusatzfeature, soll immer eine Flagge gewunken werden, wenn die Barriere passiert wird. (Ausgabe "wave flag" auf Console).
Tipp: zählen Sie bei der Barriere nicht nur die Auto-Threads, sondern auch den main Thread mit, der die Rennkontrolle hat.
Beantworten Sie folgende Frage (abgeben):
| Alle Autos auf dem Starting Grid | ________________________________ |
| Rennstart | |
| Passieren der Ziellinie | |
| Alle Autos fertig zur Ehrenrunde | |
| Alle Autos fertig mit der Ehrenrunde | Thread.join() |
Definieren Sie mit eigenen Worten, die hier verlinkten Begriffe CyclicBarrier, CountingLatch.
Eine sehr gute Erklärung: http://www.menzsoft.ch/concurrent.htm
|
Ueb W8 |
|