Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Semafor | Høynivå Synkroniseringsmekanismer
Multitråding i Java

bookUtfordring: Semafor

Oppgave

Tenk deg at du har en ressurs som kun kan benyttes av to tråder samtidig. Din oppgave er å lage et program som bruker en semaphore for å kontrollere tilgangen til denne ressursen.

Betingelser:

  1. Du har en klasse Resource med en metode use() som simulerer bruk av en ressurs, for eksempel ved å skrive ut en melding og legge inn en forsinkelse;
  2. Du har en klasse Worker som implementerer Runnable; i dens metode run() vil den forsøke å få tilgang til ressursen ved hjelp av en semaphore;
  3. I klassen SemaphoreExample har du en metode main() som initialiserer en semaphore med tillatelser for to tråder, sammen med flere arbeidertråder som vil forsøke å få tilgang til ressursen;
  4. Sørg for at ikke mer enn to tråder kan bruke ressursen samtidig.
Note
Merk

Vennligst ikke endre noe! Du skal kun implementere run()-metoden i Worker-klassen og også implementere logikken i use()-metoden i Resource-klassen.

Hvordan skal programmet fungere?

Du har 5 tråder som ønsker å kjøre use()-metoden samtidig, men med en Semaphore må du begrense samtidig kjøring til 2 tråder. Så snart en tråd frigjør Semaphore, kan en annen tråd begynne å kjøre denne metoden. For bedre tydelighet i dette scenariet, er det anbefalt å legge inn en forsinkelse i use()-metoden.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookUtfordring: Semafor

Sveip for å vise menyen

Oppgave

Tenk deg at du har en ressurs som kun kan benyttes av to tråder samtidig. Din oppgave er å lage et program som bruker en semaphore for å kontrollere tilgangen til denne ressursen.

Betingelser:

  1. Du har en klasse Resource med en metode use() som simulerer bruk av en ressurs, for eksempel ved å skrive ut en melding og legge inn en forsinkelse;
  2. Du har en klasse Worker som implementerer Runnable; i dens metode run() vil den forsøke å få tilgang til ressursen ved hjelp av en semaphore;
  3. I klassen SemaphoreExample har du en metode main() som initialiserer en semaphore med tillatelser for to tråder, sammen med flere arbeidertråder som vil forsøke å få tilgang til ressursen;
  4. Sørg for at ikke mer enn to tråder kan bruke ressursen samtidig.
Note
Merk

Vennligst ikke endre noe! Du skal kun implementere run()-metoden i Worker-klassen og også implementere logikken i use()-metoden i Resource-klassen.

Hvordan skal programmet fungere?

Du har 5 tråder som ønsker å kjøre use()-metoden samtidig, men med en Semaphore må du begrense samtidig kjøring til 2 tråder. Så snart en tråd frigjør Semaphore, kan en annen tråd begynne å kjøre denne metoden. For bedre tydelighet i dette scenariet, er det anbefalt å legge inn en forsinkelse i use()-metoden.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
some-alt