我有一个singleThreadExecutor,我正在使用这样的scheduledFixedDelay来运行Runnable
Runnable periodic = new Runnable() { ... }
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES);
它将在执行之间延迟1分钟运行。问题是,有时我需要“按需”运行它。这可能吗?
我已经考虑过取消执行,运行Runnable并重新启动执行但我真正想要的是一些简单的方法,它只是在一段时间内执行Runnable并重新安排它在一分钟内再次运行。 / p>
答案 0 :(得分:4)
当您希望任务运行时,您可以提交
executor.submit(periodic);
或添加延迟
executor.schedule(periodic, delay, units);