线程池浅析

线程池浅析

面试相关 线程池浅析

线程池参数

corePoolSize:核心线程数

maximumPoolSize: 最大线程的数 = 非核心线程数 + 核心线程数

keepAliveTime: 线程存活保持时间

unit:线程存活保持时间的单位

workQueue: 任务队列

threadFactory: 创建线程的线程工厂

handler: 线程饱和策略

线程池工作流程

线程饱和策略

饱和策略 特性
AbortPolicy 不执行新任务,直接抛出异常,提示线程池已满(默认
DisCardPolicy 不执行新任务,也不抛出异常
DisCardOldSetPolicy 将消息队列中的第一个任务替换为当前新进来的任务执行
CallerRunsPolicy 直接调用execute来执行当前任务

四种常见的线程池

线程池 特性
CachedThreadPool 可缓存的线程池,该线程池中没有核心线程,非核心线程的数量为Integer.max_value, 当有需要时创建线程来执行任务,没有需要时回收线程,适用于耗时少,任务量大的情况
FixedThreadPool 定长的线程池,有核心线程,核心线程的即为最大的线程数量,没有非核心线程
SingleThreadExecutor 只有一条线程来执行任务,线程为核心线程,适用于有顺序的任务的应用场景
ScheduledThreadPool 周期性执行任务的线程池,按照某种特定的计划执行线程中的任务,有核心线程,但也有非核心线程,非核心线程的大小也为Integer.max_value。适用于执行周期性的任务

学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。

才疏学浅,若有错误或不当之处,可批评指正,还请见谅!


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×