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 – ExecutorService只运行最近添加的Callable


下一篇:C#读写设置修改调整UVC摄像头画面-倾斜