Executes the given tasks, returning a list of Futures holding
their status and results
when all complete or the timeout expires, whichever happens first.
{@link Future#isDone} is {@code true} for each
element of the returned list.
Upon return, tasks that have not completed are cancelled.
Note that a <em>completed</em> task could have
terminated either normally or by throwing an exception.
The results of this method are undefined if the given
collection is modified while this operation is in progress.
@param tasks the collection of tasks
@param timeout the maximum time to wait
@param unit the time unit of the timeout argument
@param (T) the type of the values returned from the tasks
@return a list of Futures representing the tasks, in the same
sequential order as produced by the iterator for the
given task list. If the operation did not time out,
each task will have completed. If it did time out, some
of these tasks will not have completed.
@throws InterruptedException if interrupted while waiting, in
which case unfinished tasks are cancelled
@throws NullPointerException if tasks, any of its elements, or
unit are {@code null}
@throws RejectedExecutionException if any task cannot be scheduled
for execution
Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first. {@link Future#isDone} is {@code true} for each element of the returned list. Upon return, tasks that have not completed are cancelled. Note that a <em>completed</em> task could have terminated either normally or by throwing an exception. The results of this method are undefined if the given collection is modified while this operation is in progress.
@param tasks the collection of tasks @param timeout the maximum time to wait @param unit the time unit of the timeout argument @param (T) the type of the values returned from the tasks @return a list of Futures representing the tasks, in the same sequential order as produced by the iterator for the given task list. If the operation did not time out, each task will have completed. If it did time out, some of these tasks will not have completed. @throws InterruptedException if interrupted while waiting, in which case unfinished tasks are cancelled @throws NullPointerException if tasks, any of its elements, or unit are {@code null} @throws RejectedExecutionException if any task cannot be scheduled for execution