Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi Sémaphore | 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 Sémaphore

Tâche

Imaginez que vous avez une ressource qui peut être accédée par seulement deux threads à la fois. Votre tâche est de créer un programme qui utilise un semaphore pour contrôler l'accès à cette ressource.

Conditions :

  1. Vous avez une classe Resource avec une méthode use() qui simule l'utilisation d'une ressource, comme imprimer un message et introduire un délai ;
  2. Vous avez une classe Worker qui implémente Runnable ; dans sa méthode run(), elle tentera d'accéder à la ressource en utilisant un semaphore ;
  3. Dans la classe SemaphoreExample, vous avez une méthode main() qui initialise un semaphore avec des autorisations pour deux threads, ainsi que plusieurs threads de travail qui tenteront d'accéder à la ressource ;
  4. Assurez-vous que pas plus de deux threads ne peuvent utiliser la ressource à tout moment.

Comment le programme doit-il fonctionner ?

Vous avez 5 threads qui veulent exécuter la méthode use() simultanément, mais avec un Semaphore, vous devez limiter l'exécution simultanée à 2 threads. Dès qu'un thread libère le Semaphore, un autre thread peut commencer à exécuter cette méthode. Pour une meilleure clarté dans ce scénario, il est recommandé d'introduire un délai dans la méthode use().

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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