Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Lås och Villkor | Hög-Nivå Synkroniseringsmekanismer
Multitrådning i Java

bookUtmaning: Lås och Villkor

Uppgiftsbeskrivning

Föreställ dig att du utformar en trafikljusstyrning för en trafikerad korsning. Trafikljussystemet består av tre steg: rött ljus, gult ljus och grönt ljus. Dessa steg måste utföras i en specifik ordning för att säkerställa säker och effektiv trafikflöde.

Din uppgift är att implementera metoderna: redLight(), yellowLight() och greenLight(). Dessa metoder måste utföras strikt i ordningen för ett verkligt trafikljus: först rött ljus, sedan gult ljus och slutligen grönt ljus, oavsett i vilken ordning trådarna anropar dem.

Krav:

  • Synkronisering: Säkerställ att metoderna utförs i strikt ordning;
  • Multitrådning: Metoderna kan anropas från olika trådar, men utförandet måste ske i ordningen: redLight(), yellowLight() och greenLight();
  • Använd Lock och Condition: Använd Lock för att kontrollera åtkomst till delade resurser och Condition för att koordinera trådar.
Note
Notera

Fältet counter i klassen TaskLockExample är angivet av en anledning, du kommer att behöva kontrollera dess värde i varje metod och beroende på vad som finns där avgöra om denna tråd ska startas eller inte.

Du behöver också använda fälten lock och condition för att låsa en tråd och bestämma vem som blir först, andra, tredje.

När du har implementerat metoderna och gått vidare till Main-klassen och kört dess main-metod, ska du få en utmatning oavsett i vilken ordning och vilken tråd som kör vilken metod.

Skriv även ut något till konsolen för att kontrollera om metoderna körs i rätt ordning.

Note
Notera

Du kan också byta plats på starten av trådarna (inte själva implementationen, utan där trådens start()-metod anropas)

När du är säker på att allt fungerar, kör verifieringstesterna på sökvägen /src/test/java/TaskLockExampleTest.java.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookUtmaning: Lås och Villkor

Svep för att visa menyn

Uppgiftsbeskrivning

Föreställ dig att du utformar en trafikljusstyrning för en trafikerad korsning. Trafikljussystemet består av tre steg: rött ljus, gult ljus och grönt ljus. Dessa steg måste utföras i en specifik ordning för att säkerställa säker och effektiv trafikflöde.

Din uppgift är att implementera metoderna: redLight(), yellowLight() och greenLight(). Dessa metoder måste utföras strikt i ordningen för ett verkligt trafikljus: först rött ljus, sedan gult ljus och slutligen grönt ljus, oavsett i vilken ordning trådarna anropar dem.

Krav:

  • Synkronisering: Säkerställ att metoderna utförs i strikt ordning;
  • Multitrådning: Metoderna kan anropas från olika trådar, men utförandet måste ske i ordningen: redLight(), yellowLight() och greenLight();
  • Använd Lock och Condition: Använd Lock för att kontrollera åtkomst till delade resurser och Condition för att koordinera trådar.
Note
Notera

Fältet counter i klassen TaskLockExample är angivet av en anledning, du kommer att behöva kontrollera dess värde i varje metod och beroende på vad som finns där avgöra om denna tråd ska startas eller inte.

Du behöver också använda fälten lock och condition för att låsa en tråd och bestämma vem som blir först, andra, tredje.

När du har implementerat metoderna och gått vidare till Main-klassen och kört dess main-metod, ska du få en utmatning oavsett i vilken ordning och vilken tråd som kör vilken metod.

Skriv även ut något till konsolen för att kontrollera om metoderna körs i rätt ordning.

Note
Notera

Du kan också byta plats på starten av trådarna (inte själva implementationen, utan där trådens start()-metod anropas)

När du är säker på att allt fungerar, kör verifieringstesterna på sökvägen /src/test/java/TaskLockExampleTest.java.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2
some-alt