Я решаю задачу на экзамене и не знаю, как решить следующий сценарий: У нас есть полицейский и преступники (отдельные классы).Эта проблема имеет следующие требования:
- Существует полицейская машина вместимостью 4 пассажира
- Запрещено въезд 1 полицейскому и 3 преступникам.В машину не допускаются 0 полицейских и 4 преступника.Разрешены все другие комбинации.
- Когда в машину въезжают 4 пассажира, команда «Начать движение» должна выполнить только один полицейский
- Другие требования к действиям после синхронизации предыдущего сценария
Я выяснил, что разрешенные комбинации: (Полицейский-Преступник): 2-2, 3-1, 4-0.
В основном проблема требует разрешения 4темы (2-2, 3-1, 4-0) для входа в критическую секцию.Как я могу реализовать разрешенные комбинации этих 4 потоков?
Я не уверен, как реализовать это с помощью семафоров, мониторов, защищенных переменных.
Полицейский:
// waits until it is valid to enter the car
System.out.println("Policeman enters in the car");
// when the four passengers are inside, one policeman prints the starting command
System.out.println("Start driving.");
Thread.sleep(100);
// (OTHER CODE...)
Преступник:
// waits until it is valid to enter the car
System.out.println("Criminal enters in the car");
// (OTHER CODE...)