Uitdaging: Lock en Condition
Taakomschrijving
Stel je voor dat je een verkeerslichtcontroller ontwerpt voor een druk kruispunt. Het verkeerslichtsysteem bestaat uit drie fasen: rood licht, geel licht en groen licht. Deze fasen moeten in een specifieke volgorde worden uitgevoerd om een veilige en efficiënte verkeersdoorstroming te waarborgen.
Je taak is om de methoden te implementeren: redLight(), yellowLight() en greenLight(). Deze methoden moeten strikt worden uitgevoerd in de volgorde van een echt verkeerslicht: eerst rood licht, daarna geel licht en ten slotte groen licht, ongeacht de volgorde waarin threads ze aanroepen.
Vereisten:
- Synchronisatie: Zorg ervoor dat de methoden in strikte volgorde worden uitgevoerd;
- Multithreading: Methoden kunnen vanuit verschillende threads worden aangeroepen, maar de uitvoering moet plaatsvinden in de volgorde:
redLight(),yellowLight()engreenLight(); - Gebruik Lock en Condition: Pas
Locktoe om toegang tot gedeelde resources te beheren enConditionom threads te coördineren.
Het veld counter in de klasse TaskLockExample is om een reden gespecificeerd; je zult de waarde ervan in elke methode moeten controleren en afhankelijk van wat daar staat beslissen of je deze thread start of niet.
Je moet ook de velden lock en condition gebruiken om een thread te vergrendelen en te bepalen wie eerste, tweede, derde zal zijn.
Zodra je de methoden hebt geïmplementeerd en naar de Main-klasse bent gegaan en de main-methode uitvoert, zou je uitvoer moeten krijgen, ongeacht in welke volgorde en welke thread welke methode uitvoert.
Druk ook iets af naar de console om te controleren of de methoden in de juiste volgorde worden uitgevoerd.
Je kunt ook het starten van threads omwisselen (niet de implementatie zelf, maar waar de start()-methode van de thread wordt aangeroepen)
Zodra u zeker weet dat alles werkt, voert u de verificatietests uit op het pad /src/test/java/TaskLockExampleTest.java.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Uitdaging: Lock en Condition
Veeg om het menu te tonen
Taakomschrijving
Stel je voor dat je een verkeerslichtcontroller ontwerpt voor een druk kruispunt. Het verkeerslichtsysteem bestaat uit drie fasen: rood licht, geel licht en groen licht. Deze fasen moeten in een specifieke volgorde worden uitgevoerd om een veilige en efficiënte verkeersdoorstroming te waarborgen.
Je taak is om de methoden te implementeren: redLight(), yellowLight() en greenLight(). Deze methoden moeten strikt worden uitgevoerd in de volgorde van een echt verkeerslicht: eerst rood licht, daarna geel licht en ten slotte groen licht, ongeacht de volgorde waarin threads ze aanroepen.
Vereisten:
- Synchronisatie: Zorg ervoor dat de methoden in strikte volgorde worden uitgevoerd;
- Multithreading: Methoden kunnen vanuit verschillende threads worden aangeroepen, maar de uitvoering moet plaatsvinden in de volgorde:
redLight(),yellowLight()engreenLight(); - Gebruik Lock en Condition: Pas
Locktoe om toegang tot gedeelde resources te beheren enConditionom threads te coördineren.
Het veld counter in de klasse TaskLockExample is om een reden gespecificeerd; je zult de waarde ervan in elke methode moeten controleren en afhankelijk van wat daar staat beslissen of je deze thread start of niet.
Je moet ook de velden lock en condition gebruiken om een thread te vergrendelen en te bepalen wie eerste, tweede, derde zal zijn.
Zodra je de methoden hebt geïmplementeerd en naar de Main-klasse bent gegaan en de main-methode uitvoert, zou je uitvoer moeten krijgen, ongeacht in welke volgorde en welke thread welke methode uitvoert.
Druk ook iets af naar de console om te controleren of de methoden in de juiste volgorde worden uitgevoerd.
Je kunt ook het starten van threads omwisselen (niet de implementatie zelf, maar waar de start()-methode van de thread wordt aangeroepen)
Zodra u zeker weet dat alles werkt, voert u de verificatietests uit op het pad /src/test/java/TaskLockExampleTest.java.
Bedankt voor je feedback!