Uitdaging: Semafoor
Taak
Stel je hebt een resource die door slechts twee threads tegelijk benaderd mag worden. Je opdracht is om een programma te maken dat een semaphore gebruikt om de toegang tot deze resource te regelen.
Voorwaarden:
- Je hebt een
Resourceklasse met eenuse()methode die het gebruik van een resource simuleert, bijvoorbeeld door een bericht te printen en een vertraging toe te voegen; - Je hebt een
Workerklasse dieRunnableimplementeert; in derun()methode probeert deze toegang te krijgen tot de resource met behulp van eensemaphore; - In de
SemaphoreExampleklasse heb je eenmain()methode die eensemaphoreinitialiseert met permissies voor twee threads, samen met meerdere worker threads die proberen toegang te krijgen tot de resource; - Zorg ervoor dat nooit meer dan twee threads de resource tegelijkertijd kunnen gebruiken.
Wijzig niets! Je hoeft alleen de run()-methode in de Worker-klasse te implementeren en de logica in de use()-methode in de Resource-klasse uit te werken.
Hoe moet het programma werken?
Er zijn 5 threads die gelijktijdig de use() methode willen uitvoeren, maar met een Semaphore moet de gelijktijdige uitvoering worden beperkt tot 2 threads. Zodra een thread de Semaphore vrijgeeft, kan een andere thread beginnen met het uitvoeren van deze methode. Voor meer duidelijkheid in dit scenario wordt aanbevolen om een vertraging toe te voegen binnen de use() methode.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Uitdaging: Semafoor
Veeg om het menu te tonen
Taak
Stel je hebt een resource die door slechts twee threads tegelijk benaderd mag worden. Je opdracht is om een programma te maken dat een semaphore gebruikt om de toegang tot deze resource te regelen.
Voorwaarden:
- Je hebt een
Resourceklasse met eenuse()methode die het gebruik van een resource simuleert, bijvoorbeeld door een bericht te printen en een vertraging toe te voegen; - Je hebt een
Workerklasse dieRunnableimplementeert; in derun()methode probeert deze toegang te krijgen tot de resource met behulp van eensemaphore; - In de
SemaphoreExampleklasse heb je eenmain()methode die eensemaphoreinitialiseert met permissies voor twee threads, samen met meerdere worker threads die proberen toegang te krijgen tot de resource; - Zorg ervoor dat nooit meer dan twee threads de resource tegelijkertijd kunnen gebruiken.
Wijzig niets! Je hoeft alleen de run()-methode in de Worker-klasse te implementeren en de logica in de use()-methode in de Resource-klasse uit te werken.
Hoe moet het programma werken?
Er zijn 5 threads die gelijktijdig de use() methode willen uitvoeren, maar met een Semaphore moet de gelijktijdige uitvoering worden beperkt tot 2 threads. Zodra een thread de Semaphore vrijgeeft, kan een andere thread beginnen met het uitvoeren van deze methode. Voor meer duidelijkheid in dit scenario wordt aanbevolen om een vertraging toe te voegen binnen de use() methode.
Bedankt voor je feedback!