Utmaning: Semafor
Uppgift
Föreställ dig att du har en resurs som kan nås av endast två trådar samtidigt. Din uppgift är att skapa ett program som använder en semaphore för att kontrollera åtkomst till denna resurs.
Villkor:
- Du har en klass
Resourcemed en metoduse()som simulerar användning av en resurs, till exempel genom att skriva ut ett meddelande och införa en fördröjning; - Du har en klass
Workersom implementerarRunnable; i dess metodrun()kommer den att försöka få åtkomst till resursen med hjälp av ensemaphore; - I klassen
SemaphoreExamplehar du en metodmain()som initierar ensemaphoremed tillstånd för två trådar, tillsammans med flera arbetartrådar som försöker få åtkomst till resursen; - Säkerställ att högst två trådar kan använda resursen samtidigt.
Vänligen ändra ingenting! Du behöver endast implementera metoden run() i klassen Worker samt implementera logiken i metoden use() i klassen Resource.
Hur ska programmet fungera?
Du har 5 trådar som vill köra metoden use() samtidigt, men med en Semaphore måste du begränsa den samtidiga exekveringen till 2 trådar. Så snart en tråd släpper Semaphore, kan en annan tråd börja köra denna metod. För ökad tydlighet i detta scenario rekommenderas det att införa en fördröjning i metoden use().
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.33
Utmaning: Semafor
Svep för att visa menyn
Uppgift
Föreställ dig att du har en resurs som kan nås av endast två trådar samtidigt. Din uppgift är att skapa ett program som använder en semaphore för att kontrollera åtkomst till denna resurs.
Villkor:
- Du har en klass
Resourcemed en metoduse()som simulerar användning av en resurs, till exempel genom att skriva ut ett meddelande och införa en fördröjning; - Du har en klass
Workersom implementerarRunnable; i dess metodrun()kommer den att försöka få åtkomst till resursen med hjälp av ensemaphore; - I klassen
SemaphoreExamplehar du en metodmain()som initierar ensemaphoremed tillstånd för två trådar, tillsammans med flera arbetartrådar som försöker få åtkomst till resursen; - Säkerställ att högst två trådar kan använda resursen samtidigt.
Vänligen ändra ingenting! Du behöver endast implementera metoden run() i klassen Worker samt implementera logiken i metoden use() i klassen Resource.
Hur ska programmet fungera?
Du har 5 trådar som vill köra metoden use() samtidigt, men med en Semaphore måste du begränsa den samtidiga exekveringen till 2 trådar. Så snart en tråd släpper Semaphore, kan en annan tråd börja köra denna metod. För ökad tydlighet i detta scenario rekommenderas det att införa en fördröjning i metoden use().
Tack för dina kommentarer!