I have a homework task that requires me to learn how to use the Guava concurrency library.
In the task I have several thread pools, where each one is controlled by a
I don't think Futures.chain() is the answer here, if the primary issue is dealing with task dependency lists. More likely is Futures.allAsList or Futures.successfulAsList, which take multiple futures, and return a future that returns only after all of the input futures have succeeded or failed.
You might be interested in reading the presentation slides on Guava util.concurrent, linked on the Guava homepage (slide 11 and onward). They really helped me crystallize my understanding of ListenableFuture
and why it's so useful.
My guess is that the goal of your assignment is to understand how Futures work, and how Guava's ListenableFuture
and Futures.chain()
simplifies their use when coordinating multiple tasks.
The only open source code that comes to mind that uses ListenableFuture is sitebricks-mail:
I don't know if it uses Futures.chain()
, though.
As Louis mentions, I think that Futures.allAsList
etc. could be useful for you. However, I think that Futures.chain
does seem useful and appropriate for the situation you describe. Since this is an assignment meant to challenge you, I'm not going to say any more than this: Futures.chain
allows you to submit a task for execution upon completion of another task, and it returns a new ListenableFuture
representing the result of that task. How does that apply to what you're trying to do?