我有一个Future
任务列表
futureList.add(executor.submit(new Callable(someList)));
虽然这些正在执行,但我希望从中获得结果项目。 但是,我怎样才能在没有循环的情况下完成它并检查futuretask是否完成,然后得到它的结果?
for (int i = 0; i < futureList.size(); i++) {
if (futureList.get(i).isDone()) {
.....
}}
我考虑过制作一些额外的通知等待结构,但我仍然必须知道哪个线程已完成,因此它无法帮助我避免一直循环。 有什么建议吗?
答案 0 :(得分:7)
使用ExecutorCompletionService,它专为此目的而设计,请参阅API http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorCompletionService.html