Итак, мне нужно сделать симулятор лифта, и мне было интересно, как я могу постоянно генерировать людей, чтобы вызвать лифт. Мне нужно, чтобы это продолжалось вечно. Поэтому в основном создается человек и называет лифт. Все эти звонки отслеживаются, но я думаю, мне нужно отслеживать людей, которые тоже находятся на лифте.
У меня есть несколько классов Person
, Elevator
, ElevatorCall
и ElevatorCallQueue
.
-
У меня есть метод
run()
, который в основном делает вызов лифта с текущим полом и полом назначения, а затем у меня естьBlockingQueue
, на который я звоню. Этот метод запуска работает только в то время как true. -
В
ElevatorCall
у меня есть getters и сеттеры для этажей для коллекции и назначения -
В элементе ElevatorCallQueue у меня есть переменные для MAX_CALLS и numberOfPeople. У меня есть
BlockingQueue<ElevatorCall> queue = new ArrayBlockingQueue<ElevatorCall>(MAX_CALLS)
и aList<Person>
Я добавляю людей в список, и я просматриваю список и начинаю методrun()
для каждого человека. Наконец, я создаю лифт и предоставляю очередь и запускаю его. -
В лифте у меня есть
BlockingQueue<ElevatorCalls>
. У меня есть иwhile(true
), и внутри него я делаюArrayList<ElevatorCall>
, а затем я использую метод BlockingQueues drainTo, используяArrayList<ElevatorCalls>
в качестве параметра. Остальная часть методаrun()
в основном выполняет итерацию по списку массивов и делает то, что делает лифт, поэтому оно переходит к первой нажатой кнопке, проверяет каждый этаж для людей и, если это место назначения.
Прямо сейчас я застрял и не знаю, куда идти отсюда. Мне нужно, чтобы кто-то постоянно добавлял и звонил в лифт, а лифт ожидал, если больше не будет звонков. Был бы признателен, если бы кто-нибудь мог помочь мне в правильном направлении. Благодаря
ИЗМЕНИТЬ
Вот код класса лифта, поскольку кто-то сказал, что я должен опубликовать некоторый код. Однако я не уверен, какой код отправлять, поэтому я думал, что просто поставлю весь класс