线程池面试题目集合

最近面试中总是问到ThreadPoolExecutor类相关问题,在此集中整理下。

问题1.ThreadPoolExecutor的关键参数是哪些,任务添加过程中,内部线程是怎样构建的?

a)任务到达时,线程池数目小于核心线程数corePoolSize,则创建新的线程运行任务。

b)任务到达时,线程池数据大于等于核心线程数corePoolSize,则把任务放入blockingQueue中。

c)任务到达时,当blockingQueue已经放满时,同时线程池数目小于maximumPoolSize,则新建线程处理新到达的任务。

d)任务到达时,blockingQueue已经放满,同时线程池数目等于maximumPoolSize,则交给RejectHandler处理。

问题2:使用的等待队列容量有限制吗?

当你回答没有限制的时候,接着问题就来了,这样会有什么问题?那就是队列原来越长,最终容易OOM。

当你回答有限制的时候,接着的问题就是:那么当队列满的时候,按照blockingQueue的策略,不是应该block住吗?怎么会到达步骤c)呢?

注意:这里是一个陷阱。从源代码中可以,这里从blockingQueue中放入任务是使用的offer方法,非阻塞调用。

问题3:使用线程池时,怎样设置这些参数?

详细细节参考文章:
24张图带你彻底弄懂 Java 线程池 | 二哥的Java进阶之路

相关推荐
(●—●)橘子……3 小时前
记力扣557.反转字符串中的单词 练习理解
算法·leetcode·职场和发展
PineappleCoder3 小时前
WebP/AVIF 有多香?比 JPEG 小 30%,<picture>标签完美解决兼容性
前端·面试·性能优化
玩具猴_wjh4 小时前
面试问题相关回答
面试·职场和发展
SiYuanFeng4 小时前
新手leetcode快速刷题指南
算法·leetcode·职场和发展
Haooog4 小时前
微服务篇面试题(不定时更新)
微服务·面试·架构
Croa-vo4 小时前
NVIDIA 2025 Deep Learning & Systems 岗位面试复盘 | C++并发与底层架构难度解析
c++·深度学习·面试
知其然亦知其所以然4 小时前
JavaScript 变量的江湖恩怨:一篇文章彻底讲清楚
前端·javascript·面试
摇滚侠5 小时前
索引失效,数据库引擎,索引失效的六种情况
数据库·面试
进击的野人5 小时前
Vue生命周期详解:从创建到销毁的全过程
前端·vue.js·面试
鹏北海5 小时前
微前端实现方式:HTML Entry 与 JS Entry 的区别
前端·javascript·面试