java线程池拒绝策略

java线程池拒绝策略

线程池中,有三个重要的参数,决定了拒绝策略

  • corePoolSize 核心线程数,也即最小线程数
  • workQueue 阻塞队列,当阻塞队列饱和时,会扩充线程池中的线程数,最大到maximumPoolSize
  • maximumPoolSize 最大线程数,当线程池中的线程数达到最大时,会触发拒绝策略

拒绝策略定义

拒绝策略提供顶级接口 RejectedExecutionHandler ,其中方法 rejectedExecution 即定制具体的拒绝策略的执行逻辑。
java提供了如下四种拒绝策略:

  • AbortPolicy 丢弃任务,并抛出RejectedExecutionException
  • DiscardPolicy 直接丢弃
  • DiscardOldestPolicy 只要线程池没有关闭的话,丢弃workQueue阻塞队列最老的任务,并添加新任务到workQueue
  • CallerRunsPolicy 只要线程池没有关闭的话,由调用线程直接运行任务
posted @ 2020-01-30 11:00  oplus  阅读(9)  评论(0)    收藏  举报