Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi Verrou et Condition | Mécanismes de Synchronisation de Haut Niveau
Multithreading en Java
course content

Contenu du cours

Multithreading en Java

Multithreading en Java

1. Notions de Base du Multithreading
2. Collections Synchronisées
3. Mécanismes de Synchronisation de Haut Niveau
4. Meilleures Pratiques de Multithreading

book
Défi Verrou et Condition

Description de la tâche

Imaginez que vous concevez un contrôleur de feux de circulation pour une intersection très fréquentée. Le système de feux de circulation se compose de trois étapes : feu rouge, feu jaune et feu vert. Ces étapes doivent être exécutées dans un ordre spécifique pour assurer un flux de trafic sûr et efficace.

Votre tâche 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 vrai feu de circulation : d'abord feu rouge, puis feu jaune, et enfin feu vert, quel que soit l'ordre dans lequel les threads les appellent.

Exigences :

  • Synchronisation : Assurez-vous que les méthodes sont exécutées dans un ordre strict ;
  • Multithreading : Les méthodes peuvent être appelées à partir de différents threads, mais l'exécution doit se faire dans l'ordre : redLight(), yellowLight(), et greenLight() ;
  • Utiliser Lock et Condition : Appliquez Lock pour contrôler l'accès aux ressources partagées et Condition pour coordonner les threads.

Indice

Le champ counter dans la classe TaskLockExample est spécifié pour une raison, vous devrez vérifier sa valeur dans chaque méthode et en fonction de ce qui s'y trouve, vous décidez si vous démarrez ce thread ou non.

Vous devez également utiliser les champs lock et condition pour verrouiller certains threads 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 que vous avez exécuté sa méthode main, vous devriez avoir une sortie, peu importe l'ordre et quel thread exécute quelle méthode.

Aussi, imprimez quelque chose sur la console pour vérifier si les méthodes sont exécutées dans le bon ordre.

Remarque

Vous pouvez également échanger le démarrage des threads (pas l'implémentation elle-même, mais là où la méthode start() du thread est appelée)

Une fois que vous êtes sûr que tout fonctionne, exécutez les tests de vérification sur le chemin /src/test/java/TaskLockExampleTest.java.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2
We're sorry to hear that something went wrong. What happened?
some-alt