package carryel;

// [carryel] trivial modification
/**
 * A handler for tasks that cannot be executed by a {@link ThreadPoolExecutor2}.
 *
 * @since 1.5
 * @author Doug Lea, edited by Bongjae Chang
 */
public interface RejectedExecutionHandler2 {

    /**
     * Method that may be invoked by a {@link ThreadPoolExecutor2} when
     * {@link ThreadPoolExecutor2#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.
     *
     * <p>In the absence of other alternatives, the method may throw
     * an unchecked {@link java.util.concurrent.RejectedExecutionException}, which will be
     * propagated to the caller of {@code execute}.
     *
     * @param r the runnable task requested to be executed
     * @param executor the executor attempting to execute this task
     * @throws java.util.concurrent.RejectedExecutionException if there is no remedy
     */
    void rejectedExecution(Runnable r, ThreadPoolExecutor2 executor);
}