面试相关 线程池浅析
线程池参数
corePoolSize:核心线程数
maximumPoolSize: 最大线程的数 = 非核心线程数 + 核心线程数
keepAliveTime: 线程存活保持时间
unit:线程存活保持时间的单位
workQueue: 任务队列
threadFactory: 创建线程的线程工厂
handler: 线程饱和策略
线程池工作流程

线程饱和策略
| 饱和策略 | 特性 | 
|---|---|
| AbortPolicy | 不执行新任务,直接抛出异常,提示线程池已满(默认) | 
| DisCardPolicy | 不执行新任务,也不抛出异常 | 
| DisCardOldSetPolicy | 将消息队列中的第一个任务替换为当前新进来的任务执行 | 
| CallerRunsPolicy | 直接调用execute来执行当前任务 | 
四种常见的线程池
| 线程池 | 特性 | 
|---|---|
| CachedThreadPool | 可缓存的线程池,该线程池中没有核心线程,非核心线程的数量为Integer.max_value, 当有需要时创建线程来执行任务,没有需要时回收线程,适用于耗时少,任务量大的情况 | 
| FixedThreadPool | 定长的线程池,有核心线程,核心线程的即为最大的线程数量,没有非核心线程 | 
| SingleThreadExecutor | 只有一条线程来执行任务,线程为核心线程,适用于有顺序的任务的应用场景 | 
| ScheduledThreadPool | 周期性执行任务的线程池,按照某种特定的计划执行线程中的任务,有核心线程,但也有非核心线程,非核心线程的大小也为Integer.max_value。适用于执行周期性的任务 | 
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!

