У меня есть задание в параллельном программировании, и мне интересно, как я могу что-то сделать. У меня должен быть симулятор лифта, где люди называют лифты, лифты будут собирать их и доставлять их до места назначения. Когда лифт ничего не делает, он спит, и у Человека будет способ разбудить лифт (нажав кнопку).Java Concurrency wake up thread
В конечном итоге программа должна запускаться вечно, с созданием лифтов в начале ее, а люди создаются в произвольные моменты времени, постоянно называя лифт. Мне интересно, как я могу это сделать, чтобы программа работала вечно, пока я не остановил ее, где лифт ждет, когда Человек разбудит ее.
В моем главном классе у меня есть это прямо сейчас:
new Thread(elevators[0]).start();
panels[3].pressButton().getButtonPanel().pressButton(5);
panels[1].pressButton().getButtonPanel().pressButton(0);
panels[2].pressButton().getButtonPanel().pressButton(4);
У меня также есть множество людей, но я хочу, чтобы быть что-то генерируется постоянно и беспорядочно. Итак, в классе Person они разбудят лифт, но как я могу заставить лифт спать навсегда здесь? Спасибо за любую помощь.
Спасибо за ответ. Я знал, что могу использовать wait (true) для запуска навсегда, это была главным образом реализация постоянно создаваемых новых людей, на которых я не был уверен. Если я создаю потоки в моем основном методе, могу ли я разбудить поток лифта внутри класса Person? – AndyOHart
Ну, на самом деле вы можете только вызывать уведомление только из потока, которому принадлежит блокировка. Но как насчет нерестового потока элеватора внутри основного класса? – 3yakuya
Нить лифта запускается и запускается в основном потоке. Куда мне идти оттуда? – AndyOHart