我使用AbstractScheduledService
来运行特定时期的任务。任务是检查,以查看是否达到特定状态。如果达到了所需的状态,我想中止runOneIteration()
并关闭执行程序。
它是我的用例的正确库吗?如果没有,我应该使用哪个库,如果是,我该如何解决这个问题。在stopAsync
内拨打runOneIteration()
会导致java.util.concurrent.RejectedExecutionException
。我搜索了很多,但没有找到有用的答案,只是取消了预定的服务,如果达到特定的状态。
@Override
protected void startUp ()
{
LOGGER.log(Level.INFO, () -> "Start-Up of service");
}
@Override
protected void shutDown ()
{
LOGGER.log(Level.INFO, () -> "Shut-Down of service");
}
@Override
protected void runOneIteration ()
{
boolean result = this.checkIfServerIsOnline();
if (result)
// abort runOneIteration and shutdown scheduler
else
// continue check
}
@Override
protected Scheduler scheduler ()
{
return AbstractScheduledService.Scheduler.newFixedRateSchedule(0, 10, TimeUnit.SECONDS);
}