title: How to wait for list of `Future`s created using different `ExecutorServices`
body: <p>Ok, so I know the first answer / comment here will be "use one <code>ExecutorService</code> and use <code>invokeAll</code>". However, there is a good reason (which I will not bore people with) for us keeping the thread pools separate.</p>
  
  <p>So I have a list of thread pools (<code>ExecutorServices</code>) and what I need to do is invoke a different <code>Callable</code> on each thread pool using <code>submit</code> (no problem there). Now I have this collection of <code>Future</code> instances, each created on a seperate <code>ExecutorService</code>, and I want to wait for all of them to complete (<strong>and be able to provide a timeout at which any not done are cancelled</strong>).</p>
  
  <p>Is there an existing class that will do this (wrap a list of <code>Future</code> instances and allow for a wait till all are done)? If not, suggestions on an efficient mechanism would be appreciated. </p>
  
  <p>Was thinking of calling <code>get</code> with a timeout for each but have to do a calculation of the total time passed for each call. </p>
  
  <p>I saw this post <a href="https://stackoverflow.com/questions/117690/wait-until-any-of-futuret-is-done">Wait Until Any of Future is Done</a> but this extends <code>Future</code> instead of wrapping a list of them.</p>