java线程池拒绝策略
java线程池拒绝策略
线程池中,有三个重要的参数,决定了拒绝策略
- corePoolSize 核心线程数,也即最小线程数
- workQueue 阻塞队列,当阻塞队列饱和时,会扩充线程池中的线程数,最大到maximumPoolSize
- maximumPoolSize 最大线程数,当线程池中的线程数达到最大时,会触发拒绝策略
拒绝策略定义
拒绝策略提供顶级接口 RejectedExecutionHandler ,其中方法 rejectedExecution 即定制具体的拒绝策略的执行逻辑。
java提供了如下四种拒绝策略:
- AbortPolicy 丢弃任务,并抛出RejectedExecutionException
- DiscardPolicy 直接丢弃
- DiscardOldestPolicy 只要线程池没有关闭的话,丢弃workQueue阻塞队列最老的任务,并添加新任务到workQueue
- CallerRunsPolicy 只要线程池没有关闭的话,由调用线程直接运行任务

浙公网安备 33010602011771号