Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Semafor | Højniveausynkroniseringsmekanismer
Quizzes & Challenges
Quizzes
Challenges
/
Multitrådning i Java

bookUdfordring: Semafor

Opgave

Forestil dig, at du har en ressource, der kun kan tilgås af to tråde ad gangen. Din opgave er at oprette et program, der bruger en semaphore til at kontrollere adgangen til denne ressource.

Betingelser:

  1. Du har en klasse Resource med en metode use(), der simulerer brugen af en ressource, såsom at udskrive en besked og indføre en forsinkelse;
  2. Du har en klasse Worker, der implementerer Runnable; i dens metode run() vil den forsøge at tilgå ressourcen ved hjælp af en semaphore;
  3. I klassen SemaphoreExample har du en metode main(), der initialiserer en semaphore med tilladelser til to tråde, sammen med flere arbejdertråde, der vil forsøge at tilgå ressourcen;
  4. Sørg for, at højst to tråde kan bruge ressourcen på et givent tidspunkt.
Note
Bemærk

Venligst ændr ikke noget! Du skal kun implementere run()-metoden i Worker-klassen og også implementere logikken i use()-metoden i Resource-klassen.

Hvordan skal programmet fungere?

Der er 5 tråde, der ønsker at udføre use()-metoden samtidigt, men med en Semaphore skal den samtidige udførelse begrænses til 2 tråde. Så snart en tråd frigiver Semaphore, kan en anden tråd begynde at udføre denne metode. For bedre klarhed i dette scenarie anbefales det at indføre en forsinkelse i use()-metoden.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookUdfordring: Semafor

Stryg for at vise menuen

Opgave

Forestil dig, at du har en ressource, der kun kan tilgås af to tråde ad gangen. Din opgave er at oprette et program, der bruger en semaphore til at kontrollere adgangen til denne ressource.

Betingelser:

  1. Du har en klasse Resource med en metode use(), der simulerer brugen af en ressource, såsom at udskrive en besked og indføre en forsinkelse;
  2. Du har en klasse Worker, der implementerer Runnable; i dens metode run() vil den forsøge at tilgå ressourcen ved hjælp af en semaphore;
  3. I klassen SemaphoreExample har du en metode main(), der initialiserer en semaphore med tilladelser til to tråde, sammen med flere arbejdertråde, der vil forsøge at tilgå ressourcen;
  4. Sørg for, at højst to tråde kan bruge ressourcen på et givent tidspunkt.
Note
Bemærk

Venligst ændr ikke noget! Du skal kun implementere run()-metoden i Worker-klassen og også implementere logikken i use()-metoden i Resource-klassen.

Hvordan skal programmet fungere?

Der er 5 tråde, der ønsker at udføre use()-metoden samtidigt, men med en Semaphore skal den samtidige udførelse begrænses til 2 tråde. Så snart en tråd frigiver Semaphore, kan en anden tråd begynde at udføre denne metode. For bedre klarhed i dette scenarie anbefales det at indføre en forsinkelse i use()-metoden.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4
some-alt