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 启动服务之前至少被调用一次。
这是一种方法:
如果我覆盖 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()
时执行一次。
我需要启动一个扩展服务的服务 AbstractScheduledService
in Guava. I want to start the service in such a way that runOneIteration()
方法在服务启动后立即执行 运行 它是启动方法。
我不想使用 startAsync()
方法,因为那样会 return 异步。
如果我使用awaitRunning()
,文档指定它只会在服务达到运行状态后return。但这是否保证 runOneIteration()
在 returning 之前被调用?如果没有,有什么方法可以保证 runOneIteration()
在 return 启动服务之前至少被调用一次。
这是一种方法:
如果我覆盖
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()
时执行一次。