Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung Semaphore | 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 Semaphore

Aufgabe

Stellen Sie sich vor, Sie haben eine Ressource, auf die nur zwei Threads gleichzeitig zugreifen können. Ihre Aufgabe ist es, ein Programm zu erstellen, das ein semaphore verwendet, um den Zugriff auf diese Ressource zu kontrollieren.

Bedingungen:

  1. Sie haben eine Resource Klasse mit einer use() Methode, die die Nutzung einer Ressource simuliert, wie z.B. das Drucken einer Nachricht und das Einführen einer Verzögerung;
  2. Sie haben eine Worker Klasse, die Runnable implementiert; in ihrer run() Methode wird sie versuchen, mit einem semaphore auf die Ressource zuzugreifen;
  3. In der SemaphoreExample Klasse haben Sie eine main() Methode, die ein semaphore mit Berechtigungen für zwei Threads initialisiert, zusammen mit mehreren Worker-Threads, die versuchen werden, auf die Ressource zuzugreifen;
  4. Stellen Sie sicher, dass nicht mehr als zwei Threads die Ressource zu einem beliebigen Zeitpunkt nutzen können.

Wie sollte das Programm funktionieren?

Sie haben 5 Threads, die die use() Methode gleichzeitig ausführen möchten, aber mit einem Semaphore müssen Sie die gleichzeitige Ausführung auf 2 Threads begrenzen. Sobald ein Thread das Semaphore freigibt, kann ein anderer Thread beginnen, diese Methode auszuführen. Zur besseren Klarheit in diesem Szenario wird empfohlen, eine Verzögerung innerhalb der use() Methode einzuführen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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