我可以强制执行额外的计划执行吗?

And*_*and 6 java concurrency scheduledexecutorservice

我有一个singleThreadExecutor,我正在使用这样的scheduledFixedDelay来运行Runnable

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

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES);
Run Code Online (Sandbox Code Playgroud)

它将在执行之间延迟1分钟.问题是,有时我需要"按需"运行它.那可能吗?

我已经考虑过取消执行,运行Runnable并重新启动执行但是我真正想要的是一些简单的方法,它只是执行Runnable一段时间并重新安排它在一分钟内再次运行.

Pet*_*rey 4

当您希望任务运行时,您可以提交它

executor.submit(periodic);
Run Code Online (Sandbox Code Playgroud)

或延迟添加

executor.schedule(periodic, delay, units);
Run Code Online (Sandbox Code Playgroud)

  • 虽然不完全是我想要的,但我已经批准了这个答案。我真的希望它现在就执行*计划*执行,而不是在计划时执行,但它也可以将周期性添加为新的一次性作业,因为我使用的是 singleThreadScheduledExecutor。 (3认同)