Когда мой запланированный рабочий запрос periodi c выполняется, может случиться так, что я не хочу, чтобы он выполнял какую-либо работу в это время, и просто жду следующего в серии periodi c.
В настоящее время я справляюсь с этим, устанавливая Completer
в успешное состояние и возвращаясь перед тем, как запустить asyn c, например, так:
public ListenableFuture<Result> startWork() {
return CallbackToFutureAdapter.getFuture(completer -> {
if ( notThisTime() ) {
completer.set(Result.success());
return "nothing to do this time";
}
// the following will call completer.set(Result.success()) when it is finished...
startSomeAsyncStuff(completer);
return "started some async stuff";
});
}
Это так и должно быть быть сделано? Или я должен выполнить проверку notThisTime()
до getFuture()
и вернуть ListenableFuture
установленное значение, или что-то в этом роде?