动态线程池技术
分享人:李林
线程池的好处
● 降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和
销毁造 成的损耗。
● 提高响应速度:任务到达时,无需等待线程创建即可立即执行。
● 提高线程的可管理性:线程是稀缺资源,如果无限制创建,不仅会消耗
系统资 源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳
定性。使用 线程池可以进行统一的分配、调优和监控。
● 提供更多更强大的功能:线程池具备可拓展性,允许开发人员向其中增
加更多 的功能。比如延时定时线程池 ScheduledThreadPoolExecutor,
就允许任 务延期执行或定期执行。
线程池解决的问题是什么?
线程池解决的核心问题就是资源管理问题。
在并发环境下,系统不能够确定在任意 时刻中,有多少任务需要执行,有
多少资源需要投入。
这种不确定性将带来以下若干 问题:
1. 频繁申请 / 销毁资源和调度资源,将带来额外的消耗,可能会非常巨
大。
2. 对资源无限申请缺少抑制手段,易引发系统资源耗尽的风险。
3. 系统无法合理管理内部的资源分布,会降低系统的稳定性。 为解决资源
分配这个问题,线程池采用了“池化”(Pooling)思想。池化,顾名思义
, 是为了最大化收益并最小化风险,而将资源统一在一起管理的一种思
想。
ThreadPoolExecuto
r
生产者消费者模型
任务分配
线程分配
整体执行流程