Ah you're right. It says: "Executes the given tasks, returning a list of Futures holding their status and results when all complete. Future.isDone() is true for each element of the returned list."
... which reads to me like "when all complete" modifies "holding" rather than "returning". Quite changes the meaning. Yes I looked inside the implementation and it does wait on all results. The original snippet makes more sense now, since i had written the comment: // Go look for exceptions here, really Calling get() is just about looking for exceptions, rather than waiting on the result. OK, that much was sensible then, but then isDone() counteracts that. So it does need to go to accomplish its purpose (good, that was the last change). Now it should properly report exceptions. I'm still guessing the original behavior is due to an exception. This would make that turn up directly. On Fri, Sep 24, 2010 at 7:43 AM, Ted Dunning <[email protected]> wrote: > I think not. See > http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.htmlfor > a definition of invokeAll.
