编程语言
首页 > 编程语言> > java – ExecutorService.invokeAll不支持可运行任务的集合

java – ExecutorService.invokeAll不支持可运行任务的集合

作者:互联网

想通过ExecutorService的invokeAll(..)方法运行Runnable任务的集合.
但是现在不支持(仅支持可调用任务的集合)

有什么具体的原因吗?做类似事情的替代方法是什么.

解决方法:

只需将runnable转换为callables:

List<Callable<Void>> callables = new ArrayList<>();
for (Runnable r : runnables) {
    callables.add(toCallable(r));
}
executor.invokeAll(callables);

private Callable<Void> toCallable(final Runnable runnable) {
    return new Callable<Void>() {
        @Override
        public Void call() {
            runnable.run();
            return null;
        }
    };
}

标签:java,java-util-concurrent,executorservice
来源: https://codeday.me/bug/20190927/1823292.html