Ok, so I know the first answer / comment here will be "use one ExecutorService
and use invokeAll
". However, there is a good reason (which I will not bore people with) for us keeping the thread pools separate.
So I have a list of thread pools (ExecutorServices
) and what I need to do is invoke a different Callable
on each thread pool using submit
(no problem there). Now I have this collection of Future
instances, each created on a seperate ExecutorService
, and I want to wait for all of them to complete (and be able to provide a timeout at which any not done are cancelled).
Is there an existing class that will do this (wrap a list of Future
instances and allow for a wait till all are done)? If not, suggestions on an efficient mechanism would be appreciated.
Was thinking of calling get
with a timeout for each but have to do a calculation of the total time passed for each call.
I saw this post Wait Until Any of Future is Done but this extends Future
instead of wrapping a list of them.
Per Louis' comment, what I was looking for was Futures.successfulAsList
This allows me to wait for all to complete and then check for any futures that failed.
Guava RULES!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With