首先为什么要有线程池这个设计
- 线程的创建需要申请系统资源,会耗费一定的时间跟CPU资源,如果每次调用都新建一个线程,这个对性能的损耗是比较大且没必要的
- 线程是CPU调度的基本单元, 可以理解为线程是我们代码执行的载体,CPU通过线程间接去执行我们的代码,而载体是可以复用的
- 如果不对线程资源的使用加以控制,很可能会因为创建大量的线程而引发一系列的问题。如
- 频繁的线程上下文切换带来性能大幅降低,具体表现就是响应速度大幅降低
- 大量资源得不到释放而引发OOM
为了规避这些问题,引入了线程池
是什么
线程池允许我们用固定的线程去执行任务,当固定的线程都在忙碌的时候又会通过队列来保存任务,而一旦线程空闲下来时就会自动去队列中取出任务执行
细节
先来看看线程池的几个核心参数

corePoolSize:线程池内核心(常驻)线程数量
maximumPoolSize:线程池能容纳的最大线程数
keepAliveTime:核心线程能存活的时间长短
unit:keepAliveTime的单位
workQueue:核心线程忙碌时用来保存任务的队列
threadFactory:线程池通过该工厂来创建新的线程
handler:当线程池内达到maximumPoolSize数量的线程都在忙碌并且workQueue已满时的处理策略
未完待续...
本文深入解析线程池的设计原因与核心参数,探讨如何通过固定线程数执行任务,避免频繁创建线程导致的性能损失。文章详细介绍了corePoolSize、maximumPoolSize等关键配置,帮助读者理解线程池的运作机制。
4669

被折叠的 条评论
为什么被折叠?



