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

Suggested prompts:

Can you explain how to use Lock and Condition to synchronize the traffic light methods?

What should the output look like to confirm the correct order?

Can you give an example of how the threads might call the methods in random order?

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