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 mithilfe eines semaphore den Zugriff auf diese Ressource steuert.
Bedingungen:
- Es gibt eine Klasse
Resourcemit einer Methodeuse(), die die Nutzung einer Ressource simuliert, zum Beispiel durch Ausgabe einer Nachricht und das Einführen einer Verzögerung; - Es gibt eine Klasse
Worker, dieRunnableimplementiert; in ihrer Methoderun()versucht sie, mit einemsemaphoreauf die Ressource zuzugreifen; - In der Klasse
SemaphoreExamplegibt es eine Methodemain(), die einsemaphoremit Berechtigungen für zwei Threads sowie mehrere Worker-Threads initialisiert, die versuchen, auf die Ressource zuzugreifen; - Stellen Sie sicher, dass nie mehr als zwei Threads gleichzeitig die Ressource nutzen können.
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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Herausforderung: 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:
- Es gibt eine Klasse
Resourcemit einer Methodeuse(), die die Nutzung einer Ressource simuliert, zum Beispiel durch Ausgabe einer Nachricht und das Einführen einer Verzögerung; - Es gibt eine Klasse
Worker, dieRunnableimplementiert; in ihrer Methoderun()versucht sie, mit einemsemaphoreauf die Ressource zuzugreifen; - In der Klasse
SemaphoreExamplegibt es eine Methodemain(), die einsemaphoremit Berechtigungen für zwei Threads sowie mehrere Worker-Threads initialisiert, die versuchen, auf die Ressource zuzugreifen; - Stellen Sie sicher, dass nie mehr als zwei Threads gleichzeitig die Ressource nutzen können.
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.
Danke für Ihr Feedback!