Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung Lock und Bedingung | Hochrangige Synchronisationsmechanismen
Multithreading in Java
course content

Kursinhalt

Multithreading in Java

Multithreading in Java

1. Grundlagen der Multithread-Verarbeitung
2. Synchronisierte Sammlungen
3. Hochrangige Synchronisationsmechanismen
4. Best Practices für Multithreading

book
Herausforderung Lock und Bedingung

Aufgabenbeschreibung

Stellen Sie sich vor, Sie entwerfen einen Ampelsteuerung für eine stark befahrene Kreuzung. Das Ampelsystem besteht aus drei Phasen: Rotlicht, Gelblicht und Grünlicht. Diese Phasen müssen in einer bestimmten Reihenfolge ausgeführt werden, um einen sicheren und effizienten Verkehrsfluss zu gewährleisten.

Ihre Aufgabe ist es, die Methoden redLight(), yellowLight() und greenLight() zu implementieren. Diese Methoden müssen strikt in der Reihenfolge einer echten Ampel ausgeführt werden: zuerst Rotlicht, dann Gelblicht und schließlich Grünlicht, unabhängig von der Reihenfolge, in der Threads sie aufrufen.

Anforderungen:

  • Synchronisation: Stellen Sie sicher, dass die Methoden in strikter Reihenfolge ausgeführt werden;
  • Multithreading: Methoden können von verschiedenen Threads aufgerufen werden, aber die Ausführung muss in der Reihenfolge erfolgen: redLight(), yellowLight() und greenLight();
  • Verwendung von Lock und Condition: Wenden Sie Lock an, um den Zugriff auf gemeinsame Ressourcen zu steuern, und Condition, um Threads zu koordinieren.

Hinweis

Das counter-Feld in der TaskLockExample-Klasse ist aus einem bestimmten Grund angegeben, Sie müssen seinen Wert in jeder Methode überprüfen und je nachdem, was dort steht, entscheiden, ob Sie diesen Thread starten oder nicht.

Sie müssen auch die Felder lock und condition verwenden, um einige Threads zu sperren und zu entscheiden, wer erster, zweiter, dritter sein wird.

Sobald Sie die Methoden implementiert haben und zur Main-Klasse gewechselt sind und deren Hauptmethode ausführen, sollten Sie eine Ausgabe erhalten, unabhängig davon, in welcher Reihenfolge und welcher Thread welche Methode ausführt.

Drucken Sie auch etwas auf die Konsole, um zu überprüfen, ob die Methoden in der richtigen Reihenfolge ausgeführt werden.

Hinweis

Sie können auch den Start der Threads tauschen (nicht die Implementierung selbst, sondern wo die start()-Methode des Threads aufgerufen wird)

Sobald Sie sicher sind, dass alles funktioniert, führen Sie die Verifikationstests auf dem Pfad /src/test/java/TaskLockExampleTest.java aus.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2
We're sorry to hear that something went wrong. What happened?
some-alt