1/*
2 * Written by Doug Lea with assistance from members of JCP JSR-166
3 * Expert Group and released to the public domain, as explained at
4 * http://creativecommons.org/publicdomain/zero/1.0/
5 */
6
7package java.util.concurrent;
8
9/**
10 * A handler for tasks that cannot be executed by a {@link ThreadPoolExecutor}.
11 *
12 * @since 1.5
13 * @author Doug Lea
14 */
15public interface RejectedExecutionHandler {
16
17    /**
18     * Method that may be invoked by a {@link ThreadPoolExecutor} when
19     * {@link ThreadPoolExecutor#execute execute} cannot accept a
20     * task.  This may occur when no more threads or queue slots are
21     * available because their bounds would be exceeded, or upon
22     * shutdown of the Executor.
23     *
24     * <p>In the absence of other alternatives, the method may throw
25     * an unchecked {@link RejectedExecutionException}, which will be
26     * propagated to the caller of {@code execute}.
27     *
28     * @param r the runnable task requested to be executed
29     * @param executor the executor attempting to execute this task
30     * @throws RejectedExecutionException if there is no remedy
31     */
32    void rejectedExecution(Runnable r, ThreadPoolExecutor executor);
33}
34