0
Public boolean checkStatus(){
    if(case){
        return true;
    }
    return false;
}

final ActorSystem system = ActorSystem.apply();
Cancellable result = system.scheduler.schedule(Duration.create(delay,TimeUnit.MILLISECONDS),Duration.create(interval, TimeUnit.MILLISECONDS)(checkStatus());

当 checkStatus 情况为真时,我如何停止调度程序。

4

1 回答 1

0

您可以使用scheduleOnce方法代替取消计划任务,然后在检查是否为真时再次安排它。您将以这种方式获得所需的语义。

沿着这些思路:

public boolean checkStatus(){
    if(case){
        return true;
    }
    return false;
}

public rescheduleIfFalse(ActorSystem system) {
    if(!checkStatus) {
        system.scheduleOnce(Duration.create(interval, TimeUnit.MILLISECONDS))(rescheduleIfFalse);
    }
}

final ActorSystem system = ActorSystem.apply();
rescheduleIfFalse(system)
于 2022-02-16T17:11:21.043 回答