Contenu du cours
Multithreading en Java
Multithreading en Java
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()
.
Merci pour vos commentaires !