3

我有一个Future任务 列表

   futureList.add(executor.submit(new Callable(someList)));

当那些被执行时,我想从中得到结果。但是我怎样才能做到这一点,而不是一直循环遍历它并检查futuretask是否完成,然后得到它的结果呢?

for (int i = 0; i < futureList.size(); i++) {
                    if (futureList.get(i).isDone()) {
    .....
}}

我考虑过做一些额外的通知等待结构,但我仍然必须知道哪个线程完成了,所以它不能帮助我避免一直循环。有什么建议吗?

4

1 回答 1

7

使用 ExecutorCompletionService,它正是为此目的而设计的,请参阅 API http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorCompletionService.html

于 2014-05-30T08:43:57.180 回答