ThreadPoolExecutor的拒绝策略是在线程池中的工作队列已满且无法继续添加任务时,定义了如何处理新任务的策略。在ThreadPoolExecutor中,拒绝策略由RejectedExecutionHandler接口定义,并且可以在创建ThreadPoolExecutor时指定。
ThreadPoolExecutor提供了四种默认的拒绝策略:
-
AbortPolicy(默认):当工作队列已满并且无法再添加新任务时,抛出RejectedExecutionException异常。
-
CallerRunsPolicy:当工作队列已满并且无法再添加新任务时,由提交任务的线程来执行该任务。也就是说,任务将在提交线程的上下文中执行。
-
DiscardOldestPolicy:当工作队列已满并且无法再添加新任务时,丢弃队列中最早的任务(即等待时间最长的任务),然后尝试重新提交新任务。
-
DiscardPolicy:当工作队列已满并且无法再添加新任务时,直接丢弃新任务,不做任何处理。