线程池的核心参数:
int corePoolSize, //核心线程数量。
int maximumPoolSize, //最大线程数量。
long keepAliveTime, //线程存活时间。
TimeUnit unit, //存活时间的单位。
BlockingQueue<Runnable> workQueue, //工作队列。
ThreadFactory threadFactory, //线程工厂。
RejectedExecutionHandler handler //拒绝策略。
执行任务的流程:
1.有任务时,先启动核心线程数量的线程去执行。
2. 当核心线程消耗完后,把任务存入工作队列中。
3. 当工作队列存满以后,会启动最大线程数量的线程去执行任务。
4. 当线程数量达到最大线程数量的时候(这时工作队列也已存满任务),还有任务,则启动拒绝策略。
5.long keepAliveTime(线程存活时间):达到该时间后,会把空闲的线程(大于核心线程数量的线程)回收。