Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Lock en Condition | High-Level Synchronisatiemechanismen
Quizzes & Challenges
Quizzes
Challenges
/
Multithreading in Java

bookUitdaging: 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() en greenLight();
  • Gebruik Lock en Condition: Pas Lock toe om toegang tot gedeelde resources te beheren en Condition om threads te coördineren.
Note
Opmerking

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.

Note
Opmerking

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.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookUitdaging: 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() en greenLight();
  • Gebruik Lock en Condition: Pas Lock toe om toegang tot gedeelde resources te beheren en Condition om threads te coördineren.
Note
Opmerking

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.

Note
Opmerking

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.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2
some-alt