public void awaitSuccessfulCompletionOfCurrentTasks() throws InterruptedException, ExecutionException {
        for(Future<?> f : futures) {
            f.get();
        }

        futures.clear();
    }
public void awaitSuccessfulCompletionOfCurrentTasks() throws InterruptedException, ExecutionException {
        for(Future<?> f : futures) {
            f.get();
        }

        futures.clear();
    }
public void awaitSuccessfulCompletionOfCurrentTasks ( ) throws InterruptedException , ExecutionException { for ( Future < ? > f : futures ) { f . get ( ) ; } futures . clear ( ) ; }
Await successful completion of all previously submitted tasks.  Throw exception of the first failed task
if 1 or more tasks failed.

After this call completes, the thread pool will <i>not</i> be shut down and can be reused.

@throws ExecutionException if a computation threw an
exception
@throws InterruptedException if the current thread was interrupted
while waiting
Await successful completion of all previously submitted tasks . Throw exception of the first failed task if 1 or more tasks failed .