2012-10-17 58 views
6

我有我喂一个Runnable与scheduledFixedDelay这样我可以强制执行额外的预定执行吗?

Runnable periodic = new Runnable() { ... } 

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); 
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES); 

它将与执行之间的延迟1分钟运行singleThreadExecutor。问题是,有时我需要按需“运行”。那可能吗?

我想过取消执行,运行Runnable并重新启动执行,但我真正喜欢的是一些简单的方法,它只是执行Runnable时间的头,并重新安排它在一分钟内重新运行。

回答

4

当你想运行的任务,你可以提交

executor.submit(periodic); 

或延迟

executor.schedule(periodic, delay, units); 
+0

增加,但如果执行者已经有这个了Runnable要么执行或计划,然后会发生什么? –

+0

它会运行两次,你问它运行。 –

+2

虽然不完全是我想要的,我已经批准了这个答案。我真的很喜欢它现在执行*计划*执行,而不是计划它的时间,但它也可以像我使用singleThreadScheduledExecutor一样添加定期作为新的一次性工作。 –

相关问题