В настоящее время я пытаюсь решить проблему «ванной унисекс», описанную в [этой книге], (http://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf) ограничения: - если ванная комната пуста, в нее может войти мужчина или женщина - если мужчинаили женщина в ванной, может войти только тот же пол - в ванной уже может быть только два человека
Меня смущает то, что хотя у меня есть некоторое представление о том, как работает логика, яЯ не уверен, где / как реализовать этот код. Например, у меня есть класс с именем 'employee', который расширяет поток и может установить переменную, которая показывает, являются ли они мужчинами или женщинами. У меня также есть класс 'bathroom', который также расширяет потоккоторый содержит семафор под названием «используется», который предназначен для определения того, заполнена ли ванная комната. Я пытался реализовать структуру светового переключателя, приведенную в книге, которая, как я полагаю, является просто монитором. Я не понимаю, как это блокирует конкретныйтип потока.
Мой вопрос: где хранить переменные семафора и каковыПервый способ получить к ним доступ для реализации остальной логики?
РЕДАКТИРОВАТЬ: Когда я ссылаюсь на переключатель света, я имею в виду структуру на странице 70, а проблема ванной комнаты находится на странице 170.
Класс ванной комнаты содержит:
Semaphore being_used = new Semaphore(1);
Класс сотрудника содержит:
private String id;
private int time;
private String type;
private Boolean finished;
private Bathroom b_room;