responseFromAllThreads () {
Collection <String> response;
String result;
for (Future f : futuresList) { //java.util.concurrent.Future
result = (String) f.get();
response.add(result);
}
return response;
}
当我拨打responseFromAllThreads()
时,我希望我的回复能保证包含所有期货的相应结果。但相反,每隔一段时间,我就会发现responseFromAllThreads
返回的响应集合中的任务结果重复!来自java docs f.get() "Waits if necessary for the computation to complete, and then retrieves its result."
。
当我使用ExecutorCompletionService
时,回复收集似乎始终正常。请有人解释为什么它不能直接循环使用期货,以及它是否是使用ExecustionCompletionService的正确措施?
感谢。