You could simplify this code by using `ListenableFutures` and [`Futures.allAsList`](http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/util/concurrent/Futures.html#allAsList(java.lang.Iterable))