Desafio: Lock e Condition
Descrição da Tarefa
Imagine que você está projetando um controlador de semáforo para um cruzamento movimentado. O sistema de semáforo consiste em três estágios: luz vermelha, luz amarela e luz verde. Esses estágios devem ser executados em uma ordem específica para garantir um fluxo de tráfego seguro e eficiente.
Sua tarefa é implementar os métodos: redLight(), yellowLight() e greenLight(). Esses métodos devem ser executados estritamente na ordem de um semáforo real: primeiro luz vermelha, depois luz amarela e, por fim, luz verde, independentemente da ordem em que as threads os chamam.
Requisitos:
- Sincronização: Garantir que os métodos sejam executados em ordem estrita;
- Multithreading: Os métodos podem ser chamados por diferentes threads, mas a execução deve ocorrer na ordem:
redLight(),yellowLight()egreenLight(); - Uso de Lock e Condition: Aplicar
Lockpara controlar o acesso aos recursos compartilhados eConditionpara coordenar as threads.
O campo counter na classe TaskLockExample foi especificado por um motivo, você precisará verificar seu valor em cada método e, dependendo do que estiver lá, decidir se deve iniciar essa thread ou não.
Você também precisa usar os campos lock e condition para bloquear alguma thread e decidir quem será o primeiro, segundo, terceiro.
Após implementar os métodos e acessar a classe Main e executar seu método main, você deverá obter uma saída independentemente da ordem e de qual thread executa qual método.
Além disso, imprima algo no console para verificar se os métodos estão sendo executados na ordem correta.
Você também pode trocar o início das threads (não a implementação em si, mas onde o método start() da thread é chamado)
Depois de confirmar que tudo está funcionando, execute os testes de verificação no caminho /src/test/java/TaskLockExampleTest.java.
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: Lock e Condition
Deslize para mostrar o menu
Descrição da Tarefa
Imagine que você está projetando um controlador de semáforo para um cruzamento movimentado. O sistema de semáforo consiste em três estágios: luz vermelha, luz amarela e luz verde. Esses estágios devem ser executados em uma ordem específica para garantir um fluxo de tráfego seguro e eficiente.
Sua tarefa é implementar os métodos: redLight(), yellowLight() e greenLight(). Esses métodos devem ser executados estritamente na ordem de um semáforo real: primeiro luz vermelha, depois luz amarela e, por fim, luz verde, independentemente da ordem em que as threads os chamam.
Requisitos:
- Sincronização: Garantir que os métodos sejam executados em ordem estrita;
- Multithreading: Os métodos podem ser chamados por diferentes threads, mas a execução deve ocorrer na ordem:
redLight(),yellowLight()egreenLight(); - Uso de Lock e Condition: Aplicar
Lockpara controlar o acesso aos recursos compartilhados eConditionpara coordenar as threads.
O campo counter na classe TaskLockExample foi especificado por um motivo, você precisará verificar seu valor em cada método e, dependendo do que estiver lá, decidir se deve iniciar essa thread ou não.
Você também precisa usar os campos lock e condition para bloquear alguma thread e decidir quem será o primeiro, segundo, terceiro.
Após implementar os métodos e acessar a classe Main e executar seu método main, você deverá obter uma saída independentemente da ordem e de qual thread executa qual método.
Além disso, imprima algo no console para verificar se os métodos estão sendo executados na ordem correta.
Você também pode trocar o início das threads (não a implementação em si, mas onde o método start() da thread é chamado)
Depois de confirmar que tudo está funcionando, execute os testes de verificação no caminho /src/test/java/TaskLockExampleTest.java.
Obrigado pelo seu feedback!