如何让一个ScheduledExecutorService运行一个Runnable提前到预定的时间?

How to let a ScheduledExecutorService run a Runnable ahead of the scheduled time?

我正在使用 ScheduledExecutorService 到 运行 一个特定的作业(作为普通的 Runnable 实现)每分钟定期一次(使用方法 scheduleAtFixedDelay())。

然而,有时我希望它立即唤醒,调用 Runnable 然后 return 到它的普通策略(即再次等待 1 分钟)。

有没有简单的方法可以做到这一点?

我检查了 ScheduledExecutorService 的 API 及其超类,但到目前为止没有找到合适的。

当然我可以求助于其他一些方法,比如将相同的 Runnable 传递给为特殊目的创建的单独线程,但使用 ScheduledExecutorService 的方法会更优雅。

请记住您打电话给日程安排的ScheduledFuture

如果您想要提前运行,请调用future.cancel(),再次提交任务立即执行,然后再次安排它。