线程淘汰策略
1、线程池的拒绝策略
等待队列已经排满了,再也塞不下新任务了,同时,线程池中的max线程也达到了,⽆法继续为新任务服务。这个是时候我们就需要拒绝策略机制合理的处理这个问题。
2、JDK内置的拒绝策略
AbortPolicy(默认):直接抛出RejectedExecutionException异常阻⽌系统正常运⾏
CallerRunsPolicy:“调⽤者运⾏”⼀种调节机制,该策略既不会抛弃任务,也不会抛出异常,⽽是将某些任务回退到调⽤者,从⽽降低新任务的流量。
DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加⼊队列中尝试再次提交当前任务。
DiscardPolicy:该策略默默地丢弃⽆法处理的任务,不予任何处理也不抛出异常。如果允许任务丢失,这是最好的⼀种策略。
以上内置拒绝策略均实现了RejectedExecutionHandle接⼝