gpt4 book ai didi

Java并发唤醒线程

转载 作者:行者123 更新时间:2023-11-30 04:05:59 25 4
gpt4 key购买 nike

我有一个并发编程的作业,我想知道我该如何做一些事情。我必须有一个电梯模拟器,人们调用电梯,电梯会收集他们并将他们带到目的地楼层。当电梯没有做任何事情时,它就会 hibernate ,并且人将有一个方法来唤醒电梯(通过按下按钮)。

最终,该程序将不得不永远运行,电梯在开始时被创建,人们在随机时间被创建,不断调用电梯。我想知道,我怎样才能让程序永远运行,直到我停止它,电梯等待一个人唤醒它。

在我的主课中,我现在有这个:

    new Thread(elevators[0]).start();

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

我也有一系列的人,但我希望它是不断随机生成的。所以在 Person 类中他们会唤醒电梯,但是我怎样才能让电梯在这里永远 hibernate 呢?感谢您的帮助

最佳答案

要永远运行,只需将所有代码放入 while(true) 循环中即可。要停止它,您可以在适当的条件下使用break。或者(为了获得可能更简洁的代码),请使用 while(condition) 循环,其中您可以通过某种可以调用的方法将条件从 true 更改为 false。例如,在您的类(class)中拥有所有这些:

boolean shouldBeRunning = true;

(...)

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

(...)

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

要让电梯等待有人调用它,请使用方法 wait()。如果另一个线程在等待监视器上调用notify,则等待线程可以被“唤醒”。获取有关 wait()notify 的更多信息,以便更好地理解它。之后的实现应该就不成问题了。

关于Java并发唤醒线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20703576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com