线程池七大参数分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。
1、corePoolSize
corePoolSize是线程池中常驻核心线程数也是线程池中的一个最小的线程数量,即使这些线程处理空闲状态,他们也不会被销毁。
2、maximumPoolSize
maximumPoolSize是线程池能够容纳同时执行的最大线程数。
3、keepAliveTime
keepAliveTime是多余的空闲线程存活时间。
4、unit
unit是keepAliveTime的时间单位。
5、workQueue
workQueue是任务队列,被提交但尚未执行的任务。
6、threadFactory
threadFactory表示生成线程池中的工作线程的线程工厂。
7、Handler
Handler是拒绝策略,表示当队列满了并且工作线程大于等于线程池的最大线程数。
线性池默认工作流程
线程在有任务的时候会创建核心的线程数corePoolSize。当线程满了(有任务但是线程被使用完)不会立即扩容,而是放到阻塞队列中,当阻塞队列满了之后才会继续创建线程。
如果队列满了,线程数达到最大线程数则会执行拒绝策略。当线程数大于核心线程数,超过KeepAliveTime(闲置时间),线程会被回收,最终会保持corePoolSize个线程。