1. 参数详解
corePoolSize
核心线程数,初始化时创建的线程数
maximumPoolSize
最大线程数,当核心线程和队列占满时,会扩展线程数直到maximumPoolSize所定义的最大值。
keepAliveTime
扩展线程(核心线程数不够时,所新增的线程)最大空闲时间值
unit
扩展线程空闲时间单位(天,时,分,秒,毫秒,微秒,纳秒)
workQueue
工作队列,当核心线程占满时,多余的任务放进阻塞队列里面,在线程空闲之后执行队列里面的任务。
threadFactory
创建线程的工厂,可以扩展一些当前线程池需要的功能
handler
拒绝处理器,定义了当线程以及队列都占满时,后续任务拒绝处理策略。
2. 运行机制
- 初始化时,会创建corePoolSize个核心线程数。
- 当核心线程占满时,后续任务会放进工作队列workQueue里面
- 当核心线程和工作队列都占满时,如果maximumPoolSize>corePoolSize,并且还有新任务时,创建新的线程,直到线程数等于最大值maximumPoolSize。
- 当线程数等于maximumPoolSize且都占满,同时队列也占满。表示当前线程池已经处理不了后续的任务了,此时后续任务会进行拒绝处理。即走handler处理器的逻辑。
- 当任务量下降时,队列里面的任务会依次执行,当任务执行完之后。扩展的线程在keepAliveTime时间内没有执行新的任务即可进行回收,释放多余的资源。
网友评论