gpt4 book ai didi

java - 如何安排周期性任务,但在满足条件时停止并返回结果(Java)

转载 作者:行者123 更新时间:2023-12-02 02:41:01 24 4
gpt4 key购买 nike

  1. 我需要在一定的超时时间内定期执行特定的任务。

  2. 但是根据任务的结果,我想在超时结束之前停止。此外,我需要对当前执行的任务的引用,以便有机会询问结果。

解决 1) 是没有问题的,因为它可以通过下面所示的小代码片段来解决。但我不知道如何整合2)。因此,在这个代码示例中,我希望蜂鸣器对象运行可以产生正结果或负结果的代码,并且基于(例如)正结果,蜂鸣器任务不应再定期执行。

class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);

public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};

final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);

scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}

最佳答案

在您的 run 方法中,如果满足条件,则调用 scheduler.shutdown()。这应该完全符合您的要求。

public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() {
System.out.println("beep");
if(isMyCondition() {
scheduler.shutdown();
}
}
};

请参阅 javadoc ExecutorService.shutdown()

关于java - 如何安排周期性任务,但在满足条件时停止并返回结果(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57179822/

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