314 字
2 分钟
线程池的拒绝策略有哪些?

线程池的拒绝策略有哪些?#

我现在去银行办理业务,被经历“薄纱”了:“我们系统瘫痪了”、“谁叫你来办的你找谁去”、“看你比较急,去队里加个塞”、“今天没办法,不行你看改一天”。 三分恶面渣逆袭:四种策略 分别对应上了线程池中的四种拒绝策略:

  • AbortPolicy:这是默认的拒绝策略。该策略会抛出一个 RejectedExecutionException 异常。也就对应着“我们系统瘫痪了”。
  • CallerRunsPolicy:该策略不会抛出异常,而是会让提交任务的线程(即调用 execute 方法的线程)自己来执行这个任务。也就对应着“谁叫你来办的你找谁去”。
  • DiscardOldestPolicy:策略会丢弃队列中最老的一个任务(即队列中等待最久的任务),然后尝试重新提交被拒绝的任务。也就对应着“看你比较急,去队里加个塞”。
  • DiscardPolicy:策略会默默地丢弃被拒绝的任务,不做任何处理也不抛出异常。也就对应着“今天没办法,不行你看改一天”。

如果想实现自己的拒绝策略,实现 RejectedExecutionHandler 接口即可。

线程池的拒绝策略有哪些?
作者
强人自传
发布于
2025-07-17
许可协议
CC BY-NC-SA 4.0