ThreadPoolExecutor 是线程池的核心类,构造方法如下:
参数解释:
- corePoolSize 核心线程数。
- maximumPoolSize 最大线程数。线程数=核心线程数+非核心线程数。
- keepAliveTime 非核心线程的保活时间,非核心线程空闲时间大于这个保活时间时会被回 收。如果调用了 allowCoreThreadTimeOut(true)设置允许核心线程超时回收,那么核心线 程超时达到保活时间,一样会被回收。
- unit keepAliveTime 参数的时间单位。
- workQueue 任务的队列,execute 方法提交的 Runnable 任务在执行之前会保存到这个队里 中。
- threadFactory 创建线程的工厂,如果使用重载方法,默认为 Executors.defaultThreadFactory()。
- handler 线程池处理不过来时的拒绝回调,所谓的处理不过来就是指队列已满并且达到了 最大线程数。这个参数如果使用重载方法,默认为 AbortPolicy,也就是直接抛出 RejectedExecutionException。
线程池任务提交流程: