您现在的位置是:亿华云 > IT科技类资讯
如果我一直往线程池里面放任务,会发生什么?
亿华云2025-10-09 03:36:39【IT科技类资讯】0人已围观
简介线程池的各种参数面试的时候最常问的就是线程池的各种参数的含义,和线程池的整个运行流程,这个一定要会ThreadPoolExecutor一共有4个构造函数,但最后调用的都是如下构造函数参数
线程池的果直各种参数
面试的时候最常问的就是线程池的各种参数的含义,和线程池的往线务整个运行流程,这个一定要会
ThreadPoolExecutor一共有4个构造函数,程池但最后调用的放任发生都是如下构造函数
参数 含义 corePoolSize 核心线程池大小 maximumPoolSize 线程池最大容量大小 keepAliveTime 线程池空闲时,线程存活的果直时间 TimeUnit 线程活动保持时间的单位 BlockingQueue<Runnable> 任务队列,用于保存等待执行的往线务任务的阻塞队列 ThreadFactory 用于设置线程的工厂 RejectedExecutionHandler 饱和策略来类比学习一下这些参数,我们把线程池类比为项目组,程池线程是放任发生这个公司的成员
corePoolSize:线程池中最少的线程数,一个项目组总得有corePoolSize人坚守阵地,果直都是往线务签订劳动合同了,不能随便撤。程池
maximumPoolSize:当项目很忙时,放任发生就得加人,果直请其他项目组的亿华云计算往线务人来帮忙。但是程池公司空间有限,最多只能加到maximumPoolSize个人。当项目闲了,就得撤人了,最多能撤到corePoolSize个人
keepAliveTime & unit:上面提到项目根据忙闲来增减人员,那在编程世界里,如何定义忙和闲呢?如果一个线程在keepAliveTime(时间数字)* unit(时间单位)时间内都没有执行任务,说明这个线程很闲。如果此时线程数大于corePoolSize,这个线程就要被回收了
workQueue:就是任务队列
threadFactory:自定义如果创建线程,例如给线程指定一个有意义的名字
handler:workQueue满了(排期满了),再提交任务,该怎么处理呢?这个就是处理策略,线程池提供了4种策略,你也可以实现RejectedExecutionHandler接口来自定义策略
类 策略 AbortPolicy 丢弃任务,抛运行时异常(默认的处理策略) CallerRunsPolicy 执行任务 DiscardPolicy 忽视,什么都不会发生 DiscardOldestPolicy 丢弃队列里最近的一个任务,并执行当前任务线程池的工作流程
可以参照一下源码理解一下下面的流程
1.线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。服务器托管不过,就算队列里面有任务,线程池也不会马上执行他们。
2.当调用execute()方法添加一个任务时,线程池会做如下判断:
a. 如果正在运行的线程数量小于corePoolSize,那么马上创建线程运行这个任务
b. 如果正在运行的线程数量大于或等于corePoolSize,那么将这个任务放入队列
c. 如果这时候队列满了,而且正在运行的线程数量小于maximunPoolSize,那么还是要创建非核心线程立刻运行这个任务
d. 如果队列满了,而且正在运行的线程数量大于或等于maximunPoolSize,那么线程池会抛出RejectedExecutionException
3.当一个线程完成任务时,它会从队列中取下一个任务来执行
4.当一个线程无事可做,超过一定的时间(keepAliveTime)时,线程池会判断,如果当前运行的线程数大于corePoolSize,那么这个线程就被停掉。所以线程池的所有任务完成后,它最终会收缩到corePoolSize的大小
可以用如下图来表示整体流程
本文转载自微信公众号「 Java识堂」,可以通过以下二维码关注。转载本文请联系 Java识堂公众号。
很赞哦!(42)
相关文章
- 前面这两个步骤都是在本机完成的。到这里还没有涉及真正的域名解析服务器,如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名了。
- 过期域名怎么查询?域名查询方法有哪些?
- 域名抢注中有哪些环节?
- 单点登录的原理、实现、及技术方案比较详解
- 第五步:重复第四步,直到找到正确的纪录。
- 在聚名网如何申请域名?2021域名申请步骤须知
- 三拼域名现在多少钱一个?三拼域名好不好?
- 性能加速包:SpringBoot 2.7&JDK 17,你敢尝一尝吗
- 公司在注册域名时还需要确保邮箱的安全性。如果邮箱不安全,它只会受到攻击。攻击者可以直接在邮箱中重置密码并攻击用户。因此,有必要注意邮箱的安全性。
- 这些年背过的面试题——SpringCloud篇