我想立即提交一批任务,并定期执行它们。使用ExecutorService
对象和invokeall
方法,可以立即运行任务。但是尝试使用scheduleAtFixedRate
时,它不兼容:
executor.scheduleAtFixedRate(executor.invokeAll(callables), initialDelay, period, TimeUnit.SECONDS );
如何一次性定期执行一批任务?
答案 0 :(得分:1)
没有像invokeall
这样的东西,但是通过你的runnables循环是没有错的,因为在现实中也没有像“一次性”那样:
ScheduledExecutorService pool = Executors.newScheduledThreadPool(10);
for (int i = 0; i < 10; i++) {
pool.scheduleAtFixedRate(() -> {
// do some work
}, 0, 10, TimeUnit.SECONDS);
}
或者,如果您有Runnable
的集合:
ScheduledExecutorService pool = Executors.newScheduledThreadPool(runnables.size());
runnables.forEach((r) -> pool.scheduleAtFixedRate(r, 0, 10, TimeUnit.SECONDS));