Utmaning: 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()ochgreenLight(); - Använd Lock och Condition: Använd
Lockför att kontrollera åtkomst till delade resurser ochConditionför att koordinera trådar.
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.
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.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Utmaning: 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()ochgreenLight(); - Använd Lock och Condition: Använd
Lockför att kontrollera åtkomst till delade resurser ochConditionför att koordinera trådar.
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.
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.
Tack för dina kommentarer!