希望通过invokeAll(..)运行可运行任务的集合ExecutorService法。但目前还不支持这种方法(只支持可调用任务的集合,只支持)
有什么具体原因吗?做类似事情的替代方法是什么。
发布于 2014-06-06 12:24:16
只需将运行表转换为可调用的:
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;
}
};
}发布于 2014-06-18 07:30:50
Runnable task = new Runnable() {
public void run() {
}
};
Callable<Object> c = Executors.callable(task);刚刚发现,Executors提供了实用程序方法,将可运行的任务转换为可调用的任务。这就解释了为什么我们没有重载invokeAll,它也需要可运行的任务。
https://stackoverflow.com/questions/24081417
复制相似问题