Udfordring: Lock og Condition
Opgavebeskrivelse
Forestil dig, at du designer en trafiklyscontroller til et travlt kryds. Trafiklyssystemet består af tre faser: rødt lys, gult lys og grønt lys. Disse faser skal udføres i en bestemt rækkefølge for at sikre sikker og effektiv trafikafvikling.
Din opgave er at implementere metoderne: redLight(), yellowLight() og greenLight(). Disse metoder skal udføres strengt i rækkefølgen for et rigtigt trafiklys: først rødt lys, derefter gult lys og til sidst grønt lys, uanset hvilken rækkefølge trådene kalder dem i.
Krav:
- Synkronisering: Sikre at metoderne udføres i streng rækkefølge;
- Multitrådning: Metoderne kan kaldes fra forskellige tråde, men udførelsen skal ske i rækkefølgen:
redLight(),yellowLight()oggreenLight(); - Brug Lock og Condition: Anvend
Locktil at kontrollere adgangen til delte ressourcer ogConditiontil at koordinere tråde.
Feltet counter i klassen TaskLockExample er angivet af en grund, du skal tjekke dets værdi i hver metode og afhængigt af hvad der står, beslutte om denne tråd skal startes eller ej.
Du skal også bruge felterne lock og condition til at låse en tråd og bestemme, hvem der bliver første, anden, tredje.
Når du har implementeret metoderne og går videre til Main-klassen og kører dens main-metode, skal du få en output uanset rækkefølgen og hvilken tråd, der kører hvilken metode.
Udskriv også noget til konsollen for at kontrollere, om metoderne udføres i den korrekte rækkefølge.
Du kan også bytte om på starten af trådene (ikke implementeringen selv, men hvor trådens start()-metode kaldes)
Når du er sikker på, at alt fungerer, skal du køre verifikationstestene på stien /src/test/java/TaskLockExampleTest.java.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.33
Udfordring: Lock og Condition
Stryg for at vise menuen
Opgavebeskrivelse
Forestil dig, at du designer en trafiklyscontroller til et travlt kryds. Trafiklyssystemet består af tre faser: rødt lys, gult lys og grønt lys. Disse faser skal udføres i en bestemt rækkefølge for at sikre sikker og effektiv trafikafvikling.
Din opgave er at implementere metoderne: redLight(), yellowLight() og greenLight(). Disse metoder skal udføres strengt i rækkefølgen for et rigtigt trafiklys: først rødt lys, derefter gult lys og til sidst grønt lys, uanset hvilken rækkefølge trådene kalder dem i.
Krav:
- Synkronisering: Sikre at metoderne udføres i streng rækkefølge;
- Multitrådning: Metoderne kan kaldes fra forskellige tråde, men udførelsen skal ske i rækkefølgen:
redLight(),yellowLight()oggreenLight(); - Brug Lock og Condition: Anvend
Locktil at kontrollere adgangen til delte ressourcer ogConditiontil at koordinere tråde.
Feltet counter i klassen TaskLockExample er angivet af en grund, du skal tjekke dets værdi i hver metode og afhængigt af hvad der står, beslutte om denne tråd skal startes eller ej.
Du skal også bruge felterne lock og condition til at låse en tråd og bestemme, hvem der bliver første, anden, tredje.
Når du har implementeret metoderne og går videre til Main-klassen og kører dens main-metode, skal du få en output uanset rækkefølgen og hvilken tråd, der kører hvilken metode.
Udskriv også noget til konsollen for at kontrollere, om metoderne udføres i den korrekte rækkefølge.
Du kan også bytte om på starten af trådene (ikke implementeringen selv, men hvor trådens start()-metode kaldes)
Når du er sikker på, at alt fungerer, skal du køre verifikationstestene på stien /src/test/java/TaskLockExampleTest.java.
Tak for dine kommentarer!