Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Semafor | Hög-Nivå Synkroniseringsmekanismer
Quizzes & Challenges
Quizzes
Challenges
/
Multitrådning i Java

bookUtmaning: 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:

  1. Du har en klass Resource med en metod use() som simulerar användning av en resurs, till exempel genom att skriva ut ett meddelande och införa en fördröjning;
  2. Du har en klass Worker som implementerar Runnable; i dess metod run() kommer den att försöka få åtkomst till resursen med hjälp av en semaphore;
  3. I klassen SemaphoreExample har du en metod main() som initierar en semaphore med tillstånd för två trådar, tillsammans med flera arbetartrådar som försöker få åtkomst till resursen;
  4. Säkerställ att högst två trådar kan använda resursen samtidigt.
Note
Notering

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().

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

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

bookUtmaning: 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:

  1. Du har en klass Resource med en metod use() som simulerar användning av en resurs, till exempel genom att skriva ut ett meddelande och införa en fördröjning;
  2. Du har en klass Worker som implementerar Runnable; i dess metod run() kommer den att försöka få åtkomst till resursen med hjälp av en semaphore;
  3. I klassen SemaphoreExample har du en metod main() som initierar en semaphore med tillstånd för två trådar, tillsammans med flera arbetartrådar som försöker få åtkomst till resursen;
  4. Säkerställ att högst två trådar kan använda resursen samtidigt.
Note
Notering

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().

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
some-alt