Guava:awaitRunning() 方法是否保证在返回之前调用 runOneIteration()?

Guava: Does awaitRunning() method guarantee that runOneIteration() is called before returning?

我需要启动一个扩展服务的服务 AbstractScheduledService in Guava. I want to start the service in such a way that runOneIteration() 方法在服务启动后立即执行 运行 它是启动方法。

我不想使用 startAsync() 方法,因为那样会 return 异步。

如果我使用awaitRunning(),文档指定它只会在服务达到运行状态后return。但这是否保证 runOneIteration() 在 returning 之前被调用?如果没有,有什么方法可以保证 runOneIteration() 在 return 启动服务之前至少被调用一次。

这是一种方法:

  1. 如果我覆盖 startUp() 方法并在其中调用 runOneIteration(),这会起作用吗?

    @Override
    public void startUp() {
    runOneIteration();
    }
    

这是我用来解决这个问题的一个肮脏的技巧。

public void start() {
  runOneIteration();
  startAsync();
}

@Override
protected Scheduler scheduler() {
    return Scheduler.newFixedRateSchedule(0, 10, TimeUnit.SECONDS);
}

我在此服务上调用 start() 方法。

serviceName.start();

这样可以确保runOneIteration在调用serviceName.start()时执行一次。