首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java并发唤醒线程

Java并发唤醒线程
EN

Stack Overflow用户
提问于 2013-12-20 12:23:34
回答 1查看 325关注 0票数 1

我有一项并发编程的任务,我想知道我如何才能做一些事情。我必须有一个电梯模拟器,在那里人们打电话给电梯,电梯会收集他们,并将他们带到他们的目的层。当电梯什么都不做的时候,它就睡着了,人就会有办法叫醒电梯(按下按钮)。

最终,这个程序将不得不永远运行,电梯在它开始的时候就被创造出来,人们在随机的时间被创造出来,不停地呼叫电梯。我想知道,如何才能使程序永远运行,直到我停止它,在那里电梯等待一个人唤醒它。

在我的主修课上,我现在有这样的想法:

代码语言:javascript
复制
    new Thread(elevators[0]).start();

    panels[3].pressButton().getButtonPanel().pressButton(5);
    panels[1].pressButton().getButtonPanel().pressButton(0);
    panels[2].pressButton().getButtonPanel().pressButton(4);

我也有很多人,但我希望这是不断地随机产生的东西。所以在个人课上,他们会叫醒电梯,但是我怎么能让电梯永远睡在这里呢?谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-20 12:47:24

要想永远运行,只需将所有代码放在while(true)循环中即可。要阻止它,你可以在正确的条件下使用中断。或者(并且有一个可能更干净的代码)使用一个while(condition)循环,在这个循环中,您的条件会通过您可以调用的方法从true更改为false。例如,在您的类中有所有这些:

代码语言:javascript
复制
boolean shouldBeRunning = true;

(...)

while(shouldBeRunning){
    //all the logic here
}

(...)

public void stop(){
    this.shouldBeRunning = false;
}

要让传送器一直等到有人调用它,请使用方法wait()。如果另一个线程在服务员监视器上调用notify,则等待线程可以被“唤醒”。获取更多关于wait()notify的信息,以更好地理解它。那么,事后实施就不应该是个问题了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20703576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档