序号 | 参数 | 说明 |
---|---|---|
1 | corePoolSize | 核心线程数量 |
2 | maximumPoolSize | 最大线程数量 |
3 | keepAliveTime | 当前线程数量超过最大线程数量,空闲线程最大存活时间 |
4 | unit | keepAliveTime的时间单位 |
5 | workQueue | 任务队列 |
6 | threadFactory | 线程工厂,用于创建线程 |
7 | handler | 由于线程任务过多或者其他原因导致线程池无法工作时,任务的拒绝策略 |
线程池工作流程:
-
如果正在运行的线程数小于corePoolSize大小,那么线程池就会立即创建线程并执行。
-
如果正在运行的线程数大于corePoolSize大小,那么这个任务就会进入BlockingQueue中。
-
若BlockingQueue已满而且正在运行的线程数小于maximumPoolSize,线程池就会创建非核心线程立即执行该线程任务。
-
若BlockingQueue已满而且正在运行的线程数大于maximumPoolSize,线程池就会拒绝执行该任务抛出RejectExcutionException。
-
线程执行完毕之后,该任务就会被从任务队列移出去。
-
当线程处于空闲状态的时间超过keepAliveTime,正在运行的线程数大于corePoolSize,该线程就会被认为是空闲线程并停止。