线程淘汰策略

发布时间 2023-12-03 23:41:03作者: 林浅

1、线程池的拒绝策略

  等待队列已经排满了,再也塞不下新任务了,同时,线程池中的max线程也达到了,⽆法继续为新任务服务。这个是时候我们就需要拒绝策略机制合理的处理这个问题。

2、JDK内置的拒绝策略

  AbortPolicy(默认):直接抛出RejectedExecutionException异常阻⽌系统正常运⾏

  CallerRunsPolicy:“调⽤者运⾏”⼀种调节机制,该策略既不会抛弃任务,也不会抛出异常,⽽是将某些任务回退到调⽤者,从⽽降低新任务的流量。

  DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加⼊队列中尝试再次提交当前任务。

  DiscardPolicy:该策略默默地丢弃⽆法处理的任务,不予任何处理也不抛出异常。如果允许任务丢失,这是最好的⼀种策略。

以上内置拒绝策略均实现了RejectedExecutionHandle接⼝