ThreadPoolExecutor源码解析

本文深入解析线程池的设计原因与核心参数,探讨如何通过固定线程数执行任务,避免频繁创建线程导致的性能损失。文章详细介绍了corePoolSize、maximumPoolSize等关键配置,帮助读者理解线程池的运作机制。

  首先为什么要有线程池这个设计

  1. 线程的创建需要申请系统资源,会耗费一定的时间跟CPU资源,如果每次调用都新建一个线程,这个对性能的损耗是比较大且没必要的
  2. 线程是CPU调度的基本单元, 可以理解为线程是我们代码执行的载体,CPU通过线程间接去执行我们的代码,而载体是可以复用的
  3. 如果不对线程资源的使用加以控制,很可能会因为创建大量的线程而引发一系列的问题。如
    1. 频繁的线程上下文切换带来性能大幅降低,具体表现就是响应速度大幅降低
    2. 大量资源得不到释放而引发OOM

为了规避这些问题,引入了线程池

  是什么

       线程池允许我们用固定的线程去执行任务,当固定的线程都在忙碌的时候又会通过队列来保存任务,而一旦线程空闲下来时就会自动去队列中取出任务执行

  细节

    先来看看线程池的几个核心参数

 

corePoolSize:线程池内核心(常驻)线程数量

maximumPoolSize:线程池能容纳的最大线程数

keepAliveTime:核心线程能存活的时间长短

unit:keepAliveTime的单位

workQueue:核心线程忙碌时用来保存任务的队列

threadFactory:线程池通过该工厂来创建新的线程

handler:当线程池内达到maximumPoolSize数量的线程都在忙碌并且workQueue已满时的处理策略

 

未完待续...

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值