为什么要使用线程池?
1 重复利用已创建的线程,减少线程创建和销毁带来的开销
2 提高响应速度:任务可以不用等待线程创建就能立即执行(T1 创建线程 T2执行任务 T3销毁线程),若T1+T3>T2,可以通过线程池提高响应速度
3 提高线程可管理性:线程是稀缺资源,会降低系统稳定性,通过线程池可以对线程进行统一分配、调优和监控
1 线程池各参数
1.1 corePoolSize
核心线程数(CPU核数),任务提交后
线程数若小于corePoolSize,会一直创建(之前空闲的线程也不会使用)
线程数=corePoolSize,提交的任务会提交到队列中,等待被被执行(非核心线程or核心线程)
执行了线程池的 prestartAllCoreThreads()方法,线程池会提前创建并启动所有核心线程