code: public void setMaximumPoolSize(int maximumPoolSize) {
          if (maximumPoolSize <= 0 || maximumPoolSize < corePoolSize)
              throw new IllegalArgumentException();
          this.maximumPoolSize = maximumPoolSize;
          if (workerCountOf(ctl.get()) > maximumPoolSize)
              interruptIdleWorkers();
      }
docs: Sets the maximum allowed number of threads. This overrides any
  value set in the constructor. If the new value is smaller than
  the current value, excess existing threads will be
  terminated when they next become idle.
  
  @param maximumPoolSize the new maximum
  @throws IllegalArgumentException if the new maximum is
  less than or equal to zero, or
  less than the {@linkplain #getCorePoolSize core pool size}
  @see #getMaximumPoolSize