Défi : Lock et Condition
Description de la tâche
Imaginez que vous concevez un contrôleur de feux de circulation pour un carrefour très fréquenté. Le système de feux de circulation comprend trois phases : feu rouge, feu jaune et feu vert. Ces phases doivent être exécutées dans un ordre spécifique afin de garantir une circulation sûre et efficace.
L'objectif est d'implémenter les méthodes : redLight(), yellowLight() et greenLight(). Ces méthodes doivent être exécutées strictement dans l'ordre d'un feu de circulation réel : d'abord feu rouge, puis feu jaune, et enfin feu vert, quel que soit l'ordre dans lequel les threads les appellent.
Exigences :
- Synchronisation : Garantir que les méthodes sont exécutées dans un ordre strict ;
- Multithreading : Les méthodes peuvent être appelées depuis différents threads, mais l'exécution doit se faire dans l'ordre :
redLight(),yellowLight(), puisgreenLight(); - Utilisation de Lock et Condition : Utiliser
Lockpour contrôler l'accès aux ressources partagées etConditionpour coordonner les threads.
Le champ counter dans la classe TaskLockExample est spécifié pour une raison précise, il sera nécessaire de vérifier sa valeur dans chaque méthode et, en fonction de cette valeur, de décider si ce thread doit démarrer ou non.
Vous devez également utiliser les champs lock et condition pour verrouiller un thread et décider qui sera premier, deuxième, troisième.
Une fois que vous avez implémenté les méthodes et que vous êtes passé à la classe Main et exécuté sa méthode main, vous devriez obtenir une sortie quel que soit l'ordre et le thread qui exécute chaque méthode.
De plus, affichez quelque chose dans la console pour vérifier si les méthodes sont exécutées dans le bon ordre.
Vous pouvez également échanger le démarrage des threads (pas l'implémentation elle-même, mais l'endroit où la méthode start() du thread est appelée)
Une fois que vous êtes certain que tout fonctionne, exécutez les tests de vérification sur le chemin /src/test/java/TaskLockExampleTest.java.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.33
Défi : Lock et Condition
Glissez pour afficher le menu
Description de la tâche
Imaginez que vous concevez un contrôleur de feux de circulation pour un carrefour très fréquenté. Le système de feux de circulation comprend trois phases : feu rouge, feu jaune et feu vert. Ces phases doivent être exécutées dans un ordre spécifique afin de garantir une circulation sûre et efficace.
L'objectif est d'implémenter les méthodes : redLight(), yellowLight() et greenLight(). Ces méthodes doivent être exécutées strictement dans l'ordre d'un feu de circulation réel : d'abord feu rouge, puis feu jaune, et enfin feu vert, quel que soit l'ordre dans lequel les threads les appellent.
Exigences :
- Synchronisation : Garantir que les méthodes sont exécutées dans un ordre strict ;
- Multithreading : Les méthodes peuvent être appelées depuis différents threads, mais l'exécution doit se faire dans l'ordre :
redLight(),yellowLight(), puisgreenLight(); - Utilisation de Lock et Condition : Utiliser
Lockpour contrôler l'accès aux ressources partagées etConditionpour coordonner les threads.
Le champ counter dans la classe TaskLockExample est spécifié pour une raison précise, il sera nécessaire de vérifier sa valeur dans chaque méthode et, en fonction de cette valeur, de décider si ce thread doit démarrer ou non.
Vous devez également utiliser les champs lock et condition pour verrouiller un thread et décider qui sera premier, deuxième, troisième.
Une fois que vous avez implémenté les méthodes et que vous êtes passé à la classe Main et exécuté sa méthode main, vous devriez obtenir une sortie quel que soit l'ordre et le thread qui exécute chaque méthode.
De plus, affichez quelque chose dans la console pour vérifier si les méthodes sont exécutées dans le bon ordre.
Vous pouvez également échanger le démarrage des threads (pas l'implémentation elle-même, mais l'endroit où la méthode start() du thread est appelée)
Une fois que vous êtes certain que tout fonctionne, exécutez les tests de vérification sur le chemin /src/test/java/TaskLockExampleTest.java.
Merci pour vos commentaires !