线程池的拒绝策略是用来处理当线程池中的线程已经全部被占用,而新的任务又被提交到线程池中时的一种处理策略。以下是几种常见的线程池拒绝策略:
- AbortPolicy:这是默认的拒绝策略,它会直接抛出 RejectedExecutionException 异常,来拒绝新的任务的提交。
- CallerRunsPolicy:在这种策略下,如果线程池已经被占满了,那么新的任务将由提交该任务的线程来执行,即“调用者运行策略”。
- DiscardPolicy:该策略会默默地丢弃掉新的任务,不会有任何处理。
- DiscardOldestPolicy:该策略会丢弃掉线程池中等待时间最久的任务,然后尝试重新提交新的任务。
可以通过设置 ThreadPoolExecutor 的 setRejectedExecutionHandler() 方法来指定线程池的拒绝策略