这里有一个循环,从 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/