java - ExecutorService 等待所有 Future 完成

标签 java executorservice

我有以下 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/

相关文章:

java - 为什么当所有任务都执行完后我总是得到空值

java - 在 java.​util.​concurrent.ExecutorService 中为每个执行设置超时

java - 如何在Java中创建临时文件时删除ip和其他数值

java - HibernateException : Unable to resolve entity name from Class [java. lang.Boolean] 预期的实例/子类

java - 如何为通过 "gradle run"启动的 Java 应用程序设置最大堆大小 (-Xmx)?

java - 我在 Android JSON 解析从 URL 检索时遇到错误

java - 将 exec-maven-plugin 从 1.1.1 升级到 1.2 或 1.3.2

java - 关机还是不关机?在 ExecutorService (Java8) 中

scala - 有没有办法获得 scala.concurrent.ExecutionContext.global 的非全局克隆?

java - 阻塞直到 ExecutorService 完成