线程池面试题目集合

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

相关推荐
点云SLAM39 分钟前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理
叙白冲冲44 分钟前
哈希算法以及面试答法
算法·面试·哈希算法
a587693 小时前
Java核心概念精讲:TCP与UDP的区别、Java NIO的几个核心组件与HTTP和HTTPS的区别等(46-50)
java·面试·nio
JosieBook3 小时前
【程序人生】有梦想就能了不起,就怕你没梦想
程序人生·职场和发展
小猪乔治爱打球4 小时前
[Golang 修仙之路] 分布式专题:分布式锁
后端·面试
boonya5 小时前
Kafka核心原理与常见面试问题解析
分布式·面试·kafka
Java中文社群5 小时前
面试官:如何实现动态线程池的任务编排?
java·后端·面试
小爱同学_5 小时前
从前端模块化历史到大厂面试题
前端·javascript·面试
青鱼入云6 小时前
java面试中经常会问到的mysql问题有哪些(基础版)
java·mysql·面试
爱学习的茄子6 小时前
React Fiber:让大型应用告别卡顿的性能革命
前端·react.js·面试