Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Semáforo | Mecanismos de Sincronização de Alto Nível
Multithreading em Java

bookDesafio: 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:

  1. Você possui uma classe Resource com um método use() que simula o uso de um recurso, como imprimir uma mensagem e introduzir um atraso;
  2. Você possui uma classe Worker que implementa Runnable; em seu método run(), ela tentará acessar o recurso utilizando um semaphore;
  3. Na classe SemaphoreExample, você possui um método main() que inicializa um semaphore com permissões para dois threads, juntamente com múltiplos threads de trabalho que tentarão acessar o recurso;
  4. Garantir que não mais do que dois threads possam utilizar o recurso ao mesmo tempo.
Note
Nota

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().

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.33

bookDesafio: 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:

  1. Você possui uma classe Resource com um método use() que simula o uso de um recurso, como imprimir uma mensagem e introduzir um atraso;
  2. Você possui uma classe Worker que implementa Runnable; em seu método run(), ela tentará acessar o recurso utilizando um semaphore;
  3. Na classe SemaphoreExample, você possui um método main() que inicializa um semaphore com permissões para dois threads, juntamente com múltiplos threads de trabalho que tentarão acessar o recurso;
  4. Garantir que não mais do que dois threads possam utilizar o recurso ao mesmo tempo.
Note
Nota

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().

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4
some-alt