检查周期性ScheduledFuture是否正在运行

mia*_*iah 3 java concurrency scheduling

我有一个定期任务通过Spring安排TaskScheduler.schedule(Runnable, Trigger).

鉴于返回ScheduledFuture,有没有办法检查,如果任务正在当前运行?

mia*_*iah 7

经过一番测试,

public static boolean isRunning(ScheduledFuture future) {
    return future.getDelay(TimeUnit.MILLISECONDS) <= 0;
}
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.似乎任务仅在完成后重新安排,因此getDelay()返回负值.