线程池的饱和策略是什么?
时间: 2023-06-08 20:07:36 浏览: 47
线程池的饱和策略通常有以下四种:
1. 直接抛出异常。
2. 把任务回退到调用者,即交由调用者线程直接处理。
3. 把任务交给线程池内的其他空闲线程来处理。
4. 把任务放入队列,等待有空闲线程时再处理。
不同的线程池实现可能有所不同,但一般都会提供以上几种饱和策略中的一种或多种。
相关问题
线程池的饱和策略是什么/
线程池的饱和策略是指当线程池中的线程已达到最大容量,且无法处理新的任务时采取的策略。常见的策略包括AbortPolicy(默认策略,抛出RejectedExecutionException异常)、CallerRunsPolicy(使用提交任务的线程来执行任务)、DiscardOldestPolicy(丢弃最老的任务)、DiscardPolicy(丢弃当前的任务)。选择哪种策略取决于具体业务需求和应用场景。
捕获线程池里面的异常,要怎么做? 线程池的参数有哪些,有了解吗?有啥要注意的? 线程池的饱和策略知道不? 线程池的工作原理了解过吗?
1. 捕获线程池里面的异常,可以通过设置ThreadPoolExecutor的UncaughtExceptionHandler来捕获未处理的异常。
2. 线程池的参数包括核心线程数、最大线程数、线程空闲时间、任务队列、线程工厂等。其中,核心线程数表示线程池中一直存在的线程数量,最大线程数表示线程池中最多能存在的线程数量,线程空闲时间表示线程在空闲时存活的时间,任务队列用于存储尚未执行的任务,线程工厂用于创建新的线程。
3. 线程池的饱和策略包括AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy和DiscardPolicy。其中AbortPolicy是默认的饱和策略,当任务队列已满且线程池中的线程数达到最大线程数时,新任务将被拒绝并抛出RejectedExecutionException异常。CallerRunsPolicy会将任务回退到调用者处执行。DiscardOldestPolicy会丢弃任务队列中最旧的任务。DiscardPolicy会直接丢弃新提交的任务。
4. 线程池的工作原理如下:当有任务提交时,线程池会先判断核心线程数是否已满。如果核心线程数未满,则创建新的线程执行任务。如果核心线程数已满,则判断任务队列是否已满。如果任务队列未满,则将任务加入队列中等待执行。如果任务队列已满,则判断线程池中线程数量是否达到最大线程数。如果线程数量未达到最大线程数,则创建新的线程执行任务。如果线程数量已达到最大线程数,则根据饱和策略处理新提交的任务。