目录
1、线程池是啥
2、开启线程池
3、工作流程
线程池执行流程,即对应execute()方法
四种拒绝策略
参考文章:https://zhuanlan.zhihu.com/p/73990200
线程池: 简单理解,它就是一个管理线程的池子。
它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需要资源开销的。提高响应速度。 如果任务到达了,相对于从线程池拿线程,重新去创建一条线程执行,速度肯定慢很多。重复利用。 线程用完,再放回池子,可以达到重复利用的效果,节省资源。ThreadPoolExecutor类()
线程池可以通过ThreadPoolExecutor来创建,我们来看一下它的构造函数:
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime,TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)几个核心参数的作用(结合工作流程理解):
corePoolSize: 线程池核心线程数最大值maximumPoolSize: 线程池最大线程数大小keepAliveTime: 线程池中非核心线程空闲的存活时间大小unit: 线程空闲存活时间单位workQueue: 存放任务的阻塞队列threadFactory: 用于设置创建线程的工厂,可以给创建的线程设置有意义的名字,可方便排查问题。handler: 线城池的饱和策略事件,主要有四种类型。
