code: public void waitForCompletion(final long timeout, final TimeUnit unit) 
  			throws InterruptedException, ExecutionException, TimeoutException {
  		doneLatch.await(timeout, unit);
  	}
docs: Wait for the completion of the operation (timed version)
  @param timeout
  @param unit
  @throws InterruptedException
  @throws ExecutionException
  @throws TimeoutException