线程池面试题目集合

最近面试中总是问到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进阶之路

相关推荐
南囝coding32 分钟前
CSS终于能做瀑布流了!三行代码搞定,告别JavaScript布局
前端·后端·面试
踏浪无痕1 小时前
Go 的协程是线程吗?别被"轻量级线程"骗了
后端·面试·go
一只叫煤球的猫2 小时前
为什么Java里面,Service 层不直接返回 Result 对象?
java·spring boot·面试
求梦8202 小时前
字节前端面试复盘
面试·职场和发展
千金裘换酒2 小时前
LeetCode 二叉树的最大深度 递归+层序遍历
算法·leetcode·职场和发展
C雨后彩虹3 小时前
书籍叠放问题
java·数据结构·算法·华为·面试
码农水水3 小时前
中国电网Java面试被问:流批一体架构的实现和状态管理
java·c语言·开发语言·面试·职场和发展·架构·kafka
倦王4 小时前
力扣日刷26112
算法·leetcode·职场和发展
程序员清风4 小时前
猿辅导二面:线上出现的OOM是如何排查的?
java·后端·面试
程序员三藏4 小时前
软件测试环境搭建及测试过程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例