线程池的饱和策略是什么/
时间: 2023-06-08 19:07:45 浏览: 61
线程池的饱和策略是指当线程池中的线程已达到最大容量,且无法处理新的任务时采取的策略。常见的策略包括AbortPolicy(默认策略,抛出RejectedExecutionException异常)、CallerRunsPolicy(使用提交任务的线程来执行任务)、DiscardOldestPolicy(丢弃最老的任务)、DiscardPolicy(丢弃当前的任务)。选择哪种策略取决于具体业务需求和应用场景。
相关问题
线程池的饱和策略是什么?
线程池的饱和策略通常有以下四种:
1. 直接抛出异常。
2. 把任务回退到调用者,即交由调用者线程直接处理。
3. 把任务交给线程池内的其他空闲线程来处理。
4. 把任务放入队列,等待有空闲线程时再处理。
不同的线程池实现可能有所不同,但一般都会提供以上几种饱和策略中的一种或多种。
线程池拒绝策略保存任务
线程池的拒绝策略是用来处理当线程池已经关闭或达到饱和状态时,新提交的任务无法被执行时的情况。线程池提供了四种默认的拒绝策略:
1. AbortPolicy(默认策略):当线程池已经关闭或者已经达到饱和状态时,新提交的任务将会抛出RejectedExecutionException异常,表示任务被拒绝执行。
2. CallerRunsPolicy:直接在execute方法的调用线程中运行被拒绝的任务。这意味着当线程池已经关闭时,任务将被丢弃。
3. DiscardPolicy:直接丢弃任务,不抛出任何异常。这意味着新提交的任务将被默默地丢弃,不会得到执行。
4. DiscardOldestPolicy:丢弃队列中等待时间最长的任务,并执行当前提交的任务。如果线程池已经关闭,任务将被丢弃。
除了这四种默认的拒绝策略之外,你还可以自定义拒绝策略,只需要实现RejectedExecutionHandler接口,并在创建线程池的时候指定自定义的拒绝策略。