Desafio: Semáforo
Tarefa
Imagine que você possui um recurso que pode ser acessado por apenas dois threads ao mesmo tempo. Sua tarefa é criar um programa que utilize um semaphore para controlar o acesso a esse recurso.
Condições:
- Você possui uma classe
Resourcecom um métodouse()que simula o uso de um recurso, como imprimir uma mensagem e introduzir um atraso; - Você possui uma classe
Workerque implementaRunnable; em seu métodorun(), ela tentará acessar o recurso utilizando umsemaphore; - Na classe
SemaphoreExample, você possui um métodomain()que inicializa umsemaphorecom permissões para dois threads, juntamente com múltiplos threads de trabalho que tentarão acessar o recurso; - Garantir que não mais do que dois threads possam utilizar o recurso ao mesmo tempo.
Por favor, não altere nada! Você só precisa implementar o método run() na classe Worker e também implementar a lógica no método use() da classe Resource.
Como o programa deve funcionar?
Existem 5 threads que desejam executar o método use() simultaneamente, mas com um Semaphore, é necessário limitar a execução simultânea para 2 threads. Assim que uma thread libera o Semaphore, outra thread pode começar a executar este método. Para maior clareza neste cenário, é recomendado introduzir um atraso dentro do método use().
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.33
Desafio: Semáforo
Deslize para mostrar o menu
Tarefa
Imagine que você possui um recurso que pode ser acessado por apenas dois threads ao mesmo tempo. Sua tarefa é criar um programa que utilize um semaphore para controlar o acesso a esse recurso.
Condições:
- Você possui uma classe
Resourcecom um métodouse()que simula o uso de um recurso, como imprimir uma mensagem e introduzir um atraso; - Você possui uma classe
Workerque implementaRunnable; em seu métodorun(), ela tentará acessar o recurso utilizando umsemaphore; - Na classe
SemaphoreExample, você possui um métodomain()que inicializa umsemaphorecom permissões para dois threads, juntamente com múltiplos threads de trabalho que tentarão acessar o recurso; - Garantir que não mais do que dois threads possam utilizar o recurso ao mesmo tempo.
Por favor, não altere nada! Você só precisa implementar o método run() na classe Worker e também implementar a lógica no método use() da classe Resource.
Como o programa deve funcionar?
Existem 5 threads que desejam executar o método use() simultaneamente, mas com um Semaphore, é necessário limitar a execução simultânea para 2 threads. Assim que uma thread libera o Semaphore, outra thread pode começar a executar este método. Para maior clareza neste cenário, é recomendado introduzir um atraso dentro do método use().
Obrigado pelo seu feedback!