线程池核心参数有哪些
线程池核心参数解释:
1、corePoolSize:核心线程数
- 核心线程会一直存活,及时没有任务需要执行
- 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理
2、queueCapacity:任务队列容量(阻塞队列)
- 当核心线程数达到最大时,新任务会放在队列中排队等待执行
- maxPoolSize:最大线程数
当线程数>=corePoolSize,且任务队列已满时。线程池会创建新线程来处理任务
当线程数=maxPoolSize,且任务队列已满时,线程池会拒绝处理任务而抛出异常
3、keepAliveTime:线程存活时间
- 当线程空闲时间超过存活时间,多余的线程会自动销毁,直到线程数量=corePoolSize
- 如果最大线程数=核心线程数,那么线程在空闲时也不会被销毁
4、unit:存活时间单位,
配合线程存活时间共同使用
5、workQueue:线程池执行的任务队列
当线程池的核心线程都在处理任务时,如果来了新的任务就会被缓存到任务队列中排队等待执行
6、threadFactory:线程的创建工厂
如果我们创建线程池时不指定此参数,就会使用默认的线程创建工厂方法来创建线程
7、rejectedExecutionHandler:指定线程池拒绝策略
- 两种情况会拒绝处理任务:
- 队列已满,且线程数已达到最大线程数(maxPoolSize),就会用到此拒绝策略,属于一种限流保护机制
- 线程池异常关闭