我有以下 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()
语句时等待,而是等待 executor.invokeAll(taskList)
语句,因为 invokeAll( )
方法本身将等待所有线程的复杂化。
了解更多Answer
关于java - ExecutorService 等待所有 Future 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49789583/