После небольшого тестирования
public static boolean isRunning(ScheduledFuture future) {
return future.getDelay(TimeUnit.MILLISECONDS) <= 0;
}
работает как брелок.Кажется, задача перенесена только после завершения, поэтому getDelay()
возвращает отрицательное значение.