我有一项并发编程的任务,我想知道我如何才能做一些事情。我必须有一个电梯模拟器,在那里人们打电话给电梯,电梯会收集他们,并将他们带到他们的目的层。当电梯什么都不做的时候,它就睡着了,人就会有办法叫醒电梯(按下按钮)。
最终,这个程序将不得不永远运行,电梯在它开始的时候就被创造出来,人们在随机的时间被创造出来,不停地呼叫电梯。我想知道,如何才能使程序永远运行,直到我停止它,在那里电梯等待一个人唤醒它。
在我的主修课上,我现在有这样的想法:
new Thread(elevators[0]).start();
panels[3].pressButton().getButtonPanel().pressButton(5);
panels[1].pressButton().getButtonPanel().pressButton(0);
panels[2].pressButton().getButtonPanel().pressButton(4);我也有很多人,但我希望这是不断地随机产生的东西。所以在个人课上,他们会叫醒电梯,但是我怎么能让电梯永远睡在这里呢?谢谢你的帮助
发布于 2013-12-20 12:47:24
要想永远运行,只需将所有代码放在while(true)循环中即可。要阻止它,你可以在正确的条件下使用中断。或者(并且有一个可能更干净的代码)使用一个while(condition)循环,在这个循环中,您的条件会通过您可以调用的方法从true更改为false。例如,在您的类中有所有这些:
boolean shouldBeRunning = true;
(...)
while(shouldBeRunning){
//all the logic here
}
(...)
public void stop(){
this.shouldBeRunning = false;
}要让传送器一直等到有人调用它,请使用方法wait()。如果另一个线程在服务员监视器上调用notify,则等待线程可以被“唤醒”。获取更多关于wait()和notify的信息,以更好地理解它。那么,事后实施就不应该是个问题了。
https://stackoverflow.com/questions/20703576
复制相似问题