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?

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