code: @Nonnull
    public static EInterrupt shutdownAndWaitUntilAllTasksAreFinished (@Nonnull final ExecutorService aES,
                                                                      @Nonnegative final long nTimeout,
                                                                      @Nonnull final TimeUnit eUnit)
    {
      ValueEnforcer.notNull (aES, "ExecutorService");
  
      if (aES.isShutdown ())
        return EInterrupt.NOT_INTERRUPTED;
  
      // accept no further requests
      aES.shutdown ();
  
      // Wait...
      return waitUntilAllTasksAreFinished (aES, nTimeout, eUnit);
    }
docs: Call shutdown on the {@link ExecutorService} and wait indefinitely until it
  terminated.
  
  @param aES
  The {@link ExecutorService} to operate on. May not be
  <code>null</code>.
  @param nTimeout
  the maximum time to wait. Must be &gt; 0.
  @param eUnit
  the time unit of the timeout argument. Must not be <code>null</code>
  .
  @return {@link EInterrupt#INTERRUPTED} if the executor service was
  interrupted while awaiting termination. Never <code>null</code>.