Method that may be invoked by a {@link ThreadPoolExecutor} when
{@link ThreadPoolExecutor#execute execute} cannot accept a
task. This may occur when no more threads or queue slots are
available because their bounds would be exceeded, or upon
shutdown of the Executor.
In the absence of other alternatives, the method may throw
an unchecked {@link RejectedExecutionException}, which will be
propagated to the caller of {@code execute}.