Contenu du cours
Multithreading en Java
Multithreading en Java
3. Mécanismes de Synchronisation de Haut Niveau
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 :
- Vous avez une classe
Resource
avec une méthodeuse()
qui simule l'utilisation d'une ressource, comme imprimer un message et introduire un délai ; - Vous avez une classe
Worker
qui implémenteRunnable
; dans sa méthoderun()
, elle tentera d'accéder à la ressource en utilisant unsemaphore
; - Dans la classe
SemaphoreExample
, vous avez une méthodemain()
qui initialise unsemaphore
avec des autorisations pour deux threads, ainsi que plusieurs threads de travail qui tenteront d'accéder à la ressource ; - 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 ?
Merci pour vos commentaires !
Section 3. Chapitre 4