akka 如何停止按时间间隔计划的ActorSystem计划

des4xlb0  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(150)
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 case为true时停止调度程序。

fhity93d

fhity93d1#

你可以使用scheduleOnce方法来代替取消已调度的任务,然后在check为false或check为true时重新调度它。
沿着这样的东西:

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)

相关问题