ThreadPoolExecutor

线程池

拒绝策略

线程池的拒绝策略,即任务被添加到线程池中被拒绝而采取的处理措施。
任务被拒绝的原因可能有:

  1. 线程池异常关闭;
  2. 任务数量超过线程池的最大限制。

线程池中内置4种拒绝策略,分别为4个公共静态内部类。

  1. AbortPolicy:当任务添加到线程池中被拒绝时,它将抛出RejectedExecutionException异常。
  2. CallerRunsPolicy:当任务添加到线程池中被拒绝时,判断当前线程池是否关闭,关闭则放弃任务,反之则直接执行任务。
  3. DiscardOldestPolicy:当任务添加到线程池中被拒绝时,线程池会放弃等待队列中最旧的未处理任务,然后将被拒绝的任务添加到等待队列中;如果线程池被关闭则直接放弃任务。
  4. DiscardPolicy:当任务添加到线程池中被拒绝时,线程池将丢弃被拒绝的任务。

其中AbortPolicy是线程池默认的拒绝策略

  • 自定义拒绝策略
    实现RejectedExecutionHandler接口,在使用ThreadPoolExecutor创建线程池时,将实现类的对象作为参数传递。

参考

  1. Java多线程系列目录(共43篇) —— 如果天空不死

你可能感兴趣的:(ThreadPoolExecutor)