一.线程池
1.线程池的简要介绍及其优点
为了解决频繁创建和销毁线程带来的巨大开销问题,我们引入了线程池。线程池,简单来说就是提前把线程创建好,放到用户态代码中写的数据结构里面,需要使用的时候从池子取,用完了再放回去。使用线程池避免了直接调用api创建和销毁线程这种需要内核完成的工作,整体上都是用户态代码,在很大程度上提高了效率。
2.线程池参数
corePoolSize:核心线程数 (线程池最少线程数)
maximumPoolSize:最大线程数 (线程池最大线程数)
keepAliveTime:非核心线程允许空闲的最大时间 (在该时间内没有任务执行,就被回收) (非核心线程数+核心线程数=最大线程数)
unit:keepAliveTime参数的时间单位
workQueue:线程池的任务队列 (线程池提供submit方法,让其他线程把任务交给线程池,该队列把要执行的任务保存起来,以便后续线程池内部的工作线程消费这个队列,从而完成具体的任务执行)
threadFactory:线程工厂,把线程的属性提前初始化
handler:拒绝策略,总共分为四种