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

bookDéfi : Sémaphore

Tâche

Imaginez que vous disposez d'une ressource pouvant être accédée par seulement deux threads à la fois. Votre tâche consiste à créer un programme utilisant un semaphore pour contrôler l'accès à cette ressource.

Conditions :

  1. Vous disposez d'une classe Resource avec une méthode use() qui simule l'utilisation d'une ressource, par exemple en affichant un message et en introduisant un délai ;
  2. Vous disposez d'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 disposez d'une méthode main() qui initialise un semaphore avec des autorisations pour deux threads, ainsi que plusieurs threads workers qui tenteront d'accéder à la ressource ;
  4. Veillez à ce qu'au maximum deux threads puissent utiliser la ressource simultanément.
Note
Note

Veuillez ne rien modifier ! Vous devez uniquement implémenter la méthode run() dans la classe Worker ainsi que la logique dans la méthode use() de la classe Resource.

Fonctionnement attendu du programme

Cinq threads souhaitent exécuter simultanément la méthode use(), mais avec un Semaphore, il est nécessaire de limiter l'exécution simultanée à deux threads. Dès qu'un thread libère le Semaphore, un autre thread peut commencer à exécuter cette méthode. Pour une meilleure compréhension 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

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

bookDéfi : Sémaphore

Glissez pour afficher le menu

Tâche

Imaginez que vous disposez d'une ressource pouvant être accédée par seulement deux threads à la fois. Votre tâche consiste à créer un programme utilisant un semaphore pour contrôler l'accès à cette ressource.

Conditions :

  1. Vous disposez d'une classe Resource avec une méthode use() qui simule l'utilisation d'une ressource, par exemple en affichant un message et en introduisant un délai ;
  2. Vous disposez d'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 disposez d'une méthode main() qui initialise un semaphore avec des autorisations pour deux threads, ainsi que plusieurs threads workers qui tenteront d'accéder à la ressource ;
  4. Veillez à ce qu'au maximum deux threads puissent utiliser la ressource simultanément.
Note
Note

Veuillez ne rien modifier ! Vous devez uniquement implémenter la méthode run() dans la classe Worker ainsi que la logique dans la méthode use() de la classe Resource.

Fonctionnement attendu du programme

Cinq threads souhaitent exécuter simultanément la méthode use(), mais avec un Semaphore, il est nécessaire de limiter l'exécution simultanée à deux threads. Dès qu'un thread libère le Semaphore, un autre thread peut commencer à exécuter cette méthode. Pour une meilleure compréhension 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
some-alt