java - 等待执行者

标签 java multithreading executorservice

这里有一个循环,从 GenericObjectPool 借用对象并在每个循环中提交给 Executor。然后,调用者必须等待所有执行器完成。

这是当前代码 -

private ImplClass implObject;
private Future future;

for (Iterator iter = anArrayList.iterator(); iter.hasNext();) {

    //Gets a GenericObjectPool Object
    implObject = (ImplClass) this.getImplPool().borrowObject();

    future = getExecutorServices().submit(implObject);
}


// Wait for Exectuor to complete
while (!future.isDone()) {
    try {
        Thread.sleep(Global.WaitTime());

    } catch (InterruptedException iex) {
    }
}

但是这是错误的,因为 future 仅等待最后一个线程。我应该创建一个 Future 数组来监视每个执行者吗?

最佳答案

ExecutorService 有一个特定的方法:ExecutorService.invokeAll(tasks)

ExecutorCompletionService Ralf 的回答中提到的也很有帮助 - 它允许您在结果到达时通过调用者线程处理结果。

关于java - 等待执行者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981954/

相关文章:

java - 字符串的正则表达式验证

java - 无法将凯撒密码移动超过 1

iphone - 我可以在iPhone OS中使用POSIX线程吗?

java - 在线程java中计算pi

java - 在 Java EE 应用程序中同时进行 httpurlconnection 调用的最佳方法是什么

java - 在 hazel 转换中使用 sql 谓词的嵌套获取/更新函数

java - Intellij IDEA 2017.2 无法解析符号

python - ThreadPoolExecutor 线程数

java - 我需要关闭 ScheduledExecutorService,但需要在需要时启动它

java - 遍历 List<Future> 对象抛出 IndexOutOfBounds 异常