线程池是基于池的线程管理机制。
七大属性:
- 核心线程数
- 最大线程数
- 超时时间
- TimeUnit 线程超时时间单位
- 缓冲队列
- 拒绝策略
- 线程工厂
优先顺序:
- 核心线程数
- 缓冲队列Capacity 容量
- 最大线程数
任务提交
当一个新任务通过execute()或submit()方法提交到线程池时,线程池会按照以下流程处理:
- 首先检查核心线程数(corePoolSize)。如果当前运行的线程数小于核心线程数,则创建新线程来执行任务,即使其他线程可能处于空闲状态。
- 如果运行的线程数等于或大于核心线程数,则将任务加入工作队列(workQueue)。
- 如果工作队列已满,且运行的线程数小于最大线程数(maximumPoolSize),则创建新的线程来处理任务。
- 如果工作队列已满,且运行的线程数等于最大线程数,则根据拒绝策略(RejectedExecutionHandler)来处理该任务。
如果设置了允许核心线程超时,那么核心线程在空闲超过keepAliveTime后也会被回收