If
RejectedExecutionHandler.rejectedExecution(Runnable, ThreadPoolExecutor)
will be called.
The default behavior is that you'll get a RejectedExecutionException thrown at the caller. But there are more predefined behaviors available:
You can set them using one of the ThreadPool constructors:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
RejectedExecutionHandler handler) // <--
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) // <--
You can as well implement your own behavior by extending RejectedExecutionHandler interface:
void rejectedExecution(Runnable r, ThreadPoolExecutor executor)