线程池基本信息
线程池是一种结合池化思想衍生出来的一种线程管理及使用的方案
其主要针对服务器端多线程场景下,服务器频繁接收请求,每个请求都分配一个单独的线程去处理。
使用线程的开销:
- 创建和销毁线程
- 调度线程
线程池主要解决的核心问题是资源管理的问题。在并发环境下,系统不能确定在任意时刻中,有多少任务需要处理,有多少资源需要投入,这种不确定性带来以下问题:
- 频繁申请/销毁/调度资源,将带来执行业务之外的开销,线程数量过多时,这部分消耗非常巨大
- 对资源申请缺少抑制手段,容易引发资源耗尽的风险
- 系统无法合理的管理内部资源的分布,会降低系统的稳定性
线程池的几个概念
- 线程池管理器
用于初始化一定数量的线程资源,提供启动线程,停止线程、调配任务的方法。 - 工作线程
线程池中等待并执行分配任务的线程 - 任务接口
添加任务的接口,便于工作线程调度任务的执行 - 任务队列
用于存放等待处理的任务(区分任务的优先级)
线程池工作的四种场景
-
线程池空闲
主程序中没有任务需要执行,任务队列为空闲状态