Utfordring: 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:
- Du har en klasse
Resourcemed en metodeuse()som simulerer bruk av en ressurs, for eksempel ved å skrive ut en melding og legge inn en forsinkelse; - Du har en klasse
Workersom implementererRunnable; i dens metoderun()vil den forsøke å få tilgang til ressursen ved hjelp av ensemaphore; - I klassen
SemaphoreExamplehar du en metodemain()som initialiserer ensemaphoremed tillatelser for to tråder, sammen med flere arbeidertråder som vil forsøke å få tilgang til ressursen; - Sørg for at ikke mer enn to tråder kan bruke ressursen samtidig.
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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Utfordring: 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:
- Du har en klasse
Resourcemed en metodeuse()som simulerer bruk av en ressurs, for eksempel ved å skrive ut en melding og legge inn en forsinkelse; - Du har en klasse
Workersom implementererRunnable; i dens metoderun()vil den forsøke å få tilgang til ressursen ved hjelp av ensemaphore; - I klassen
SemaphoreExamplehar du en metodemain()som initialiserer ensemaphoremed tillatelser for to tråder, sammen med flere arbeidertråder som vil forsøke å få tilgang til ressursen; - Sørg for at ikke mer enn to tråder kan bruke ressursen samtidig.
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.
Takk for tilbakemeldingene dine!