Dé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 :
- Vous disposez d'une classe
Resourceavec une méthodeuse()qui simule l'utilisation d'une ressource, par exemple en affichant un message et en introduisant un délai ; - Vous disposez d'une classe
Workerqui implémenteRunnable; dans sa méthoderun(), elle tentera d'accéder à la ressource en utilisant unsemaphore; - Dans la classe
SemaphoreExample, vous disposez d'une méthodemain()qui initialise unsemaphoreavec des autorisations pour deux threads, ainsi que plusieurs threads workers qui tenteront d'accéder à la ressource ; - Veillez à ce qu'au maximum deux threads puissent utiliser la ressource simultanément.
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().
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
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
Dé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 :
- Vous disposez d'une classe
Resourceavec une méthodeuse()qui simule l'utilisation d'une ressource, par exemple en affichant un message et en introduisant un délai ; - Vous disposez d'une classe
Workerqui implémenteRunnable; dans sa méthoderun(), elle tentera d'accéder à la ressource en utilisant unsemaphore; - Dans la classe
SemaphoreExample, vous disposez d'une méthodemain()qui initialise unsemaphoreavec des autorisations pour deux threads, ainsi que plusieurs threads workers qui tenteront d'accéder à la ressource ; - Veillez à ce qu'au maximum deux threads puissent utiliser la ressource simultanément.
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().
Merci pour vos commentaires !