我在并发编程中有一个任务,我想知道我怎么能做些什么。 我必须有一个电梯模拟器,人们打电话给电梯,电梯将收集它们并将它们带到目的地楼层。当电梯没有做任何事情时,它会睡觉,而人员将有一种方法来唤醒电梯(按下按钮)。
最终程序必须永远运行,电梯在其开始时创建,人们随机创建,不断呼叫电梯。 我想知道,我怎么能让程序永远运行,直到我停下来,电梯等待一个人叫醒它。
在我的主要班级,我现在有这个:
new Thread(elevators[0]).start();
panels[3].pressButton().getButtonPanel().pressButton(5);
panels[1].pressButton().getButtonPanel().pressButton(0);
panels[2].pressButton().getButtonPanel().pressButton(4);
我也有一系列人物,但我希望这是一个不断随机生成的东西。 所以在Person课程中他们会唤醒电梯,但是如何让电梯永远在这里睡觉呢? 谢谢你的帮助
答案 0 :(得分:2)
要永远运行,只需将所有代码放在while(true)
循环中。要停止它,您可以在正确的条件下使用break。或者(并且有一个可能更干净的代码)使用while(condition)
循环,通过您可以调用的某种方法将条件从true更改为false。例如,在您的班级中拥有所有这些:
boolean shouldBeRunning = true;
(...)
while(shouldBeRunning){
//all the logic here
}
(...)
public void stop(){
this.shouldBeRunning = false;
}
要让elewator等到有人调用它,请使用方法wait()
。如果另一个线程在服务员监视器上调用notify
,则可以'唤醒'等待线程。获取有关wait()
和notify
的更多信息,以便更好地了解它。之后实施应该不是问题。