线程池面试题目集合

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

相关推荐
一水9 小时前
JVM 面试宝典:从入门到调优实战
jvm·面试
糖果店的幽灵9 小时前
人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历
人工智能·面试·职场和发展·langgraph
liang_jy10 小时前
文件管理(六)—— 文件共享和保护
面试·操作系统
liang_jy10 小时前
文件管理(五)—— 文件的基本操作
面试·操作系统
尤乐娃子14 小时前
进入大厂(厂子大)实习Day4
职场和发展·实习
Revolution6115 小时前
页面更新后为什么出现 Loading chunk failed:旧页面如何请求了已删除的构建产物
前端·面试·前端工程化
thesky12345616 小时前
27届大模型岗面试准备(五):预训练全流程拆解——从数据清洗到 Tokenizer 再到 PT 的每
人工智能·面试·大模型·预训练·tokenizer
众人皆醒我独醉17 小时前
为什么 AI 每次回答不一样?—— 温度参数是 AI 的"创意调节旋钮"
面试·ai编程
清泓y20 小时前
深度学习算法
算法·ai·语言模型·面试