+-

我有下面的ExecutorService代码.
try{
ExecutorService executor = Executors.newFixedThreadPool(5);
List<Callable<String>> taskList = new ArrayList<Callable<String>>(5);
for(int i=1;i<=5;i++){
taskList.add(new SimpleTask());
}
List<Future<String>> list = executor.invokeAll(taskList);
executor.shutdown();
System.out.println(list.get(0).get());
System.out.println("Exit");
}catch(Exception e){
e.printStackTrace();
}
class SimpleTask implements Callable<String> {
@Override
public String call() throws Exception {
return new Date().toString();
}
}
我想知道list.get(0).get()会等待所有任务完成吗?
最佳答案
这里代码不会在执行list.get(0).get()语句时等待,而是执行者.invokeAll(taskList)语句,因为invokeAll()方法本身将等待所有线程的复杂化.
要了解更多Answer
点击查看更多相关文章
转载注明原文:java – ExecutorService等待所有Future完成 - 乐贴网