Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use the Guava ListenableFuture and the Futures.chain() methods

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 an individual object.

Each pool has several working threads that perform simple tasks (mostly emulating doing stuff by using Thread.sleep(long)) and all those simple tasks are stored in a container object that emulates a messageboard.

Each simple task has a dependency list of other tasks, and it cannot be executed until all of those tasks are completed.

How can I benefit from the Guava library using the ListenableFuture and the Futures.chain()?

I have searched everywhere for some extensive example code online, but didn't find anything that I understand how to use.

like image 371
Bob Avatar asked Dec 28 '22 08:12

Bob


1 Answers

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?

like image 61
ColinD Avatar answered Jan 13 '23 14:01

ColinD