gpt4 book ai didi

java - 暂停一个方法,直到再次调用它

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:04 26 4
gpt4 key购买 nike

我有这个方法run(),它执行很多其他方法。在这些子方法中,有一个计数器,在某些子方法中会以 1 递增。当此计数器达到给定数字 n 时,方法 run() 应暂停一段不确定的时间。当再次调用它时,它应该从暂停之前离开的地方开始执行。

这在 Java 中可能吗?

编辑:Andersoj 询问的更多信息

我多次尝试精简代码。这是一个非常基本的示例。

public void run(int n) {
executeA();
}

public void executeA() {
while (randomCondition) {
executeB();
counter++;
}
executeC();
if (counter <= 100)
executeD();
}

executeA() 中的代码应该运行,直到 counter 等于 n。无论在哪里执行,它都应该暂停(这可能发生在 executeA() 中的任何位置。

过了一会儿,run() 再次被调用,代码应该恢复到线程之前在 executeA() 中停止的位置。

再次感谢!

最佳答案

如果您的停止和恢复是基于给定的条件,并假设该方法将被可能使条件发生变化的其他线程唤醒(您的问题中没有一个前提是明确的):

public void run() {
synchronized(mutex){
while(condition){
try {
mutex.wait();
}catch(InterruptedException e) {//...}
}
goOn();
}
}

或者,您可以使用 mutex.wait(waitTime) 等待任意时间。

当条件改变时,你的另一个线程会唤醒正在等待的线程,或者在等待时间结束后的某个时间再次唤醒,在这种情况下,条件将被重新评估,如果条件没有改变,它可能会再次进入等待状态。

public void run() {
synchronized(mutex){
if(condition){
mutex.notify();
}
}
}

关于java - 暂停一个方法,直到再次调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565172/

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