Galera, é o seguinte. Preciso resolver o problema do enunciado abaixo. Gostaria de saber se tem alguém aqui que possa me ajudar??
"O Problema da Montanha Russa
Suponha que existam $n$ passageiros e um carro em uma montanha russa. Os passageiros,
repetidamente, esperam para dar uma volta no carro. O carro tem capacidade para $C$
passageiros, com $C < n$. O carro só pode partir quando estiver cheio. Após dar uma volta
na montanha russa, cada passageiro passeia pelo parque de diversões e depois retorna à
montanha russa para a próxima volta.
Tanto o carro como os passageiros devem ser representados por threads. As threads
passageiro executam o seguinte pseudocódigo:
thread passageiro { while (!fechouParque) { entraNoCarro(); esperaVoltaAcabar(); saiDoCarro(); passeiaPeloParque(); // tempo variável } }
A thread carro executa o seguinte pseudocódigo:
process carro { while (existemPassageirosNoParque) { esperaEncher(); daUmaVolta(); esperaEsvaziar(); volta++; // serve como parâmetro para fechar o parque } }
Requisitos
* Este exercício deve ser implementado em Java, usando semáforos e Threads.
* O principal no programa é o uso de semáforos para controle de concorrência e
sincronização entre threads. A ordem de chegada dos passageiros na fila de embarque na
montanha russa deve ser respeitada. Sua solução não deve deixar que passageiros furem
essa fila.
* O carro só pode partir se estiver cheio.
* A saída do seu programa deve ser bem planejada, de modo a mostrar o que está
acontecendo a cada momento, sem ficar carregada demais."