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