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

bookHerausforderung: 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 mithilfe eines semaphore den Zugriff auf diese Ressource steuert.

Bedingungen:

  1. Es gibt eine Klasse Resource mit einer Methode use(), die die Nutzung einer Ressource simuliert, zum Beispiel durch Ausgabe einer Nachricht und das Einführen einer Verzögerung;
  2. Es gibt eine Klasse Worker, die Runnable implementiert; in ihrer Methode run() versucht sie, mit einem semaphore auf die Ressource zuzugreifen;
  3. In der Klasse SemaphoreExample gibt es eine Methode main(), die ein semaphore mit Berechtigungen für zwei Threads sowie mehrere Worker-Threads initialisiert, die versuchen, auf die Ressource zuzugreifen;
  4. Stellen Sie sicher, dass nie mehr als zwei Threads gleichzeitig die Ressource nutzen können.
Note
Hinweis

Bitte nichts verändern! Sie müssen nur die Methode run() in der Klasse Worker sowie die Logik in der Methode use() in der Klasse Resource implementieren.

Wie soll das Programm funktionieren?

Es gibt 5 Threads, die gleichzeitig die Methode use() ausführen möchten. Mit einem Semaphore muss die gleichzeitige Ausführung jedoch auf 2 Threads beschränkt werden. Sobald ein Thread das Semaphore freigibt, kann ein anderer Thread mit der Ausführung dieser Methode beginnen. Zur besseren Veranschaulichung in diesem Szenario wird empfohlen, innerhalb der Methode use() eine Verzögerung einzubauen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain how a semaphore works in this context?

What would the output look like when running this program?

Can you show how to implement the Resource and Worker classes?

Awesome!

Completion rate improved to 3.33

bookHerausforderung: Semaphore

Swipe um das Menü anzuzeigen

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 mithilfe eines semaphore den Zugriff auf diese Ressource steuert.

Bedingungen:

  1. Es gibt eine Klasse Resource mit einer Methode use(), die die Nutzung einer Ressource simuliert, zum Beispiel durch Ausgabe einer Nachricht und das Einführen einer Verzögerung;
  2. Es gibt eine Klasse Worker, die Runnable implementiert; in ihrer Methode run() versucht sie, mit einem semaphore auf die Ressource zuzugreifen;
  3. In der Klasse SemaphoreExample gibt es eine Methode main(), die ein semaphore mit Berechtigungen für zwei Threads sowie mehrere Worker-Threads initialisiert, die versuchen, auf die Ressource zuzugreifen;
  4. Stellen Sie sicher, dass nie mehr als zwei Threads gleichzeitig die Ressource nutzen können.
Note
Hinweis

Bitte nichts verändern! Sie müssen nur die Methode run() in der Klasse Worker sowie die Logik in der Methode use() in der Klasse Resource implementieren.

Wie soll das Programm funktionieren?

Es gibt 5 Threads, die gleichzeitig die Methode use() ausführen möchten. Mit einem Semaphore muss die gleichzeitige Ausführung jedoch auf 2 Threads beschränkt werden. Sobald ein Thread das Semaphore freigibt, kann ein anderer Thread mit der Ausführung dieser Methode beginnen. Zur besseren Veranschaulichung in diesem Szenario wird empfohlen, innerhalb der Methode use() eine Verzögerung einzubauen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
some-alt