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

bookUtfordring: Lås og Betingelse

Oppgavebeskrivelse

Tenk deg at du skal designe en trafikklys-kontroller for et travelt kryss. Trafikklyssystemet består av tre faser: rødt lys, gult lys og grønt lys. Disse fasene må utføres i en bestemt rekkefølge for å sikre trygg og effektiv trafikkavvikling.

Din oppgave er å implementere metodene: redLight(), yellowLight() og greenLight(). Disse metodene må utføres strengt i rekkefølgen til et ekte trafikklys: først rødt lys, deretter gult lys, og til slutt grønt lys, uavhengig av rekkefølgen trådene kaller dem i.

Krav:

  • Synkronisering: Sørg for at metodene utføres i streng rekkefølge;
  • Multitråding: Metodene kan kalles fra ulike tråder, men utførelsen må skje i rekkefølgen: redLight(), yellowLight() og greenLight();
  • Bruk Lock og Condition: Bruk Lock for å kontrollere tilgang til delte ressurser og Condition for å koordinere trådene.
Note
Merk

Feltet counter i klassen TaskLockExample er angitt av en grunn, du må sjekke verdien i hver metode og avhengig av hva som står der avgjøre om denne tråden skal starte eller ikke.

Du må også bruke feltene lock og condition for å låse en tråd og bestemme hvem som skal være første, andre, tredje.

Når du har implementert metodene og gått videre til Main-klassen og kjørt dens main-metode, skal du få en utdata uansett rekkefølge og hvilken tråd som kjører hvilken metode.

Skriv også ut noe til konsollen for å sjekke om metodene utføres i riktig rekkefølge.

Note
Merk

Du kan også bytte om på oppstarten av trådene (ikke implementasjonen i seg selv, men der hvor trådens start()-metode kalles)

Når du er sikker på at alt fungerer, kjør verifikasjonstestene på banen /src/test/java/TaskLockExampleTest.java.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2

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

Awesome!

Completion rate improved to 3.33

bookUtfordring: Lås og Betingelse

Sveip for å vise menyen

Oppgavebeskrivelse

Tenk deg at du skal designe en trafikklys-kontroller for et travelt kryss. Trafikklyssystemet består av tre faser: rødt lys, gult lys og grønt lys. Disse fasene må utføres i en bestemt rekkefølge for å sikre trygg og effektiv trafikkavvikling.

Din oppgave er å implementere metodene: redLight(), yellowLight() og greenLight(). Disse metodene må utføres strengt i rekkefølgen til et ekte trafikklys: først rødt lys, deretter gult lys, og til slutt grønt lys, uavhengig av rekkefølgen trådene kaller dem i.

Krav:

  • Synkronisering: Sørg for at metodene utføres i streng rekkefølge;
  • Multitråding: Metodene kan kalles fra ulike tråder, men utførelsen må skje i rekkefølgen: redLight(), yellowLight() og greenLight();
  • Bruk Lock og Condition: Bruk Lock for å kontrollere tilgang til delte ressurser og Condition for å koordinere trådene.
Note
Merk

Feltet counter i klassen TaskLockExample er angitt av en grunn, du må sjekke verdien i hver metode og avhengig av hva som står der avgjøre om denne tråden skal starte eller ikke.

Du må også bruke feltene lock og condition for å låse en tråd og bestemme hvem som skal være første, andre, tredje.

Når du har implementert metodene og gått videre til Main-klassen og kjørt dens main-metode, skal du få en utdata uansett rekkefølge og hvilken tråd som kjører hvilken metode.

Skriv også ut noe til konsollen for å sjekke om metodene utføres i riktig rekkefølge.

Note
Merk

Du kan også bytte om på oppstarten av trådene (ikke implementasjonen i seg selv, men der hvor trådens start()-metode kalles)

Når du er sikker på at alt fungerer, kjør verifikasjonstestene på banen /src/test/java/TaskLockExampleTest.java.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2
some-alt