线程池面试题目集合

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

相关推荐
꒰ঌ 安卓开发໒꒱41 分钟前
RabbitMQ面试全解析:从核心概念到高可用架构
面试·架构·rabbitmq
杨筱毅1 小时前
【C++】【常见面试题】最简版带大小和超时限制的LRU缓存实现
c++·面试
Wnq100721 小时前
AI 在法律咨询服务中的革命性变化:技术赋能与生态重构
人工智能·职场和发展·重构·分类·数据分析·全文检索·创业创新
Dream it possible!4 小时前
LeetCode 面试经典 150_链表_旋转链表(64_61_C++_中等)
c++·leetcode·链表·面试
阿健君6 小时前
Android 高频八股文十问
面试
T___T6 小时前
AIGC 实战:用 pnpm 提速 + Node.js 调用 OpenAI 🤖
面试·node.js
面试鸭7 小时前
影石开奖,有点香
计算机·职场和发展·互联网
小白菜又菜8 小时前
Leetcode 2273. Find Resultant Array After Removing Anagrams
算法·leetcode·职场和发展
沐怡旸9 小时前
【技术选型】前端框架:Vue vs React - 组合式API与Hooks的哲学之争
前端·面试
软件测试媛10 小时前
14:00开始面试,14:06就出来了,问的问题有点变态。。。
面试·职场和发展