Я пишу многопоточное приложение, имитирующее кинотеатр. Каждый вовлеченный человек - это свой собственный поток, и параллелизм должен полностью выполняться семафорами. Единственная проблема, с которой я столкнулся, - это как связать потоки, чтобы они могли общаться (например, через канал).
Например:
Клиент [1], который является потоком, получает семафор, который позволяет ему подойти к кассе. Теперь Заказчик [1] должен сообщить агенту по кассовым сборам, что он хочет посмотреть фильм «X». Затем BoxOfficeAgent [1], также являющийся потоком, должен проверить, не заполнен ли фильм, и либо продать билет, либо попросить клиента [1] выбрать другой фильм.
Как передать эти данные туда и обратно, пока все еще поддержание параллелизма с семафорами?
Кроме того, единственный класс, который я могу использовать из java.util.concurrent, - это класс Semaphore .