1.7 KiB
1.7 KiB
介绍
Executor 是一个工具类,内部提供了许多静态方法,根据用户选择返回不同线程池实例, ThreadPoolExecutor 继承 AbstractExecutorService, 成员变量 ctl 是一个 Integer 的原子变量,用于记录线程池状态和线程池中线程个数,
线程池状态
- RUNNING:接收新任务并处理阻塞队列里的任务
- SHUTDOWN:拒绝新任务但是处理阻塞队列里的任务
- STOP:拒绝新任务并抛弃阻塞队列里的任务,同时中断正在处理的任务
- TIDYING:所有任务都执行完成(包含阻塞队列)后当前线程池活动线程数量为 0,将要调用 terminated 方法
- TERMINATED:终止状态,terminated 方法调用后的状态
线程池参数
- corePoolSize:线程池核心线程个数
- workQueue:用于保存等待执行任务的阻塞队列
- maximunPoolSize:最大线程数量
- ThreadFactory:创建线程的工厂
- RejectedExecutionHandler:饱和策略,AbortPolicy(抛出异常),CallRunsPolicy(使用调用者所在线程执行),DiscardOldestPolicy(调用 poll 丢弃一个任务,执行当前任务),DiscardPolicy(默默丢弃,不抛出异常)
- keepAliveTime:存活时间,闲置线程最大存活时间
- TimeUnit:存活时间的时间单位
线程池类型
- newFixedThreadPool:核心线程个数和最大线程个数都为 nThreads 的线程池,阻塞队列长度为 Integer. MAX_VALUE
- newSingleThreadExecutor:核心线程数和最大线程数位 1 的线程池
- newCachedThreadThreadPool:按需创建线程的线程池,初始个数为 0,最多线程个数为 Integer. MAX_VALUE,阻塞队列为同步队列
类图介绍
public void execute(Runnable command)
worker(Runnable firstTask)
源码分析