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
Fantastisk!
Completion rate forbedret til 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!