hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。
✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
人生之义,在于追求,不在成败,勤通大道。加油呀!
个人主页:Ethan Yankang
专栏:史上最强八股文||Java项目
温馨提示:划到文末发现专栏彩蛋 点击这里直接传送
本篇概览:详细讲解了线程池在面试中的真实提问
目录
6.3 线程池
面试官:线程池的种类有哪些?
面试官:线程池的核心参数有哪些?
面试官:如何确定核心线程池呢?
面试官:线程池的执行原理知道吗?
面试官:为什么不建议使用Executors创建线程池呢?
候选人:
嗯!是这样
在jdk中默认提供了4中方式创建线程池
第一个是:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回 收空闲线程,若无可回收,则新建线程。
第二个是:newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列 中等待。
第三个是:newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
第四个是:newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任 务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
候选人:
在线程池中一共有7个核心参数:
corePoolSize 核心线程数目 - 池中会保留的最多线程数
maximumPoolSize 最大线程数目 - 核心线程+救急线程的最大数目
keepAliveTime 生存时间 - 救急线程的生存时间,生存时间内没有新任务,此线程资源会释放
unit 时间单位 - 救急线程的生存时间单位,如秒、毫秒等
workQueue - 当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务
threadFactory 线程工厂 - 可以定制线程对象的创建,例如设置线程名字、是否是守护线程等
handler 拒绝策略 - 当所有线程都在繁忙,workQueue 也放满时,会触发拒绝策略
在拒绝策略中又有4中拒绝策略
当线程数过多以后,第一种是抛异常、第二种是由调用者执行任务、第三是丢弃当前的任务,第四是丢弃最早排队任务。默认是直接抛异常。
候选人:
是这样的,我们公司当时有一些规范,为了减少线程上下文的切换,要根据当时部署的服务器的CPU核数来决定,我们规则是:CPU核数+1就是最终的核心线程数。
候选人:
嗯~,它是这样的
首先判断线程池里的核心线程是否都在执行任务,如果不是则创建一个新的工作线程来执行任务。如果核心线程都在执行任务,则线程池判断工作队列是否已满,如果工作队列没有满,则将新提交的任务存储在这个工作队 列里。如果工作队列满了,则判断线程池里的线程是否都处于工作状态,如果没有,则创建一个新的工作线程来执行任 务。如果已经满了,则交给拒绝策略来处理这个任务。
候选人:
好的,其实这个事情在阿里提供的最新开发手册《Java开发手册-嵩山版》中也提到了
主要原因是如果使用Executors创建线程池的话,它允许的请求队列默认长度是Integer.MAX_VALUE,这样的话,有可能导致堆积大量的请求,从而导致OOM(内存溢出)。
所以,我们一般推荐使用ThreadPoolExecutor来创建线程池,这样可以明确规定线程池的参数,避免资源的耗尽。
热门专栏推荐
计算机科学入门系列 关注走一波
CSAPP深入理解计算机原理 关注走一波
微服务项目之黑马头条 关注走一波
redis深度项目之黑马点评 关注走一波
Java面试八股文系列专栏 关注走一波
算法leetcode+剑指offer 关注走一波
总栏
JAVA后端技术栈 关注走一波
JAVA面试八股文 关注走一波
JAVA项目(含源码深度剖析) 关注走一波
计算机四件套 关注走一波
算法 关注走一波
必知必会工具集 关注走一波
书籍网课笔记汇总 关注走一波
考试复习资料 关注走一波
C/C++技术栈 关注走一波
GO技术栈 关注走一波
分栏
JAVA后端技术栈
spring 关注走一波
redis 关注走一波
MySQL 关注走一波
mybatis 关注走一波
mybatisplus 关注走一波
MQ 关注走一波
微服务 关注走一波
设计模式 关注走一波
分布式锁 关注走一波
JAVA八股文
JAVA面试八股文(redis、MySQL、框架、微服务、MQ、JVM、设计模式、并发编程、JAVA集合、常见技术场景)
关注走一波
史上最强JAVA八股文(强烈推荐)
关注走一波
JAVA项目(含源码深度剖析)
黑马头条(微服务) 关注走一波
黑马点评(redis) 关注走一波
计算机四件套
计算机基础 关注走一波
计算机基础 关注走一波
计算机网络 关注走一波
数据结构与算法 关注走一波
算法
leetcode 关注走一波
剑指offer 关注走一波
必知必会工具集 关注走一波
书籍网课笔记汇总
CSAPP笔记 关注走一波
计算机科学速成课 关注走一波
CS自学指南 关注走一波
读书笔记与每日记录 关注走一波
考试复习资料 关注走一波
C/C++技术栈 关注走一波
GO技术栈 关注走一波
非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞 关注❤收藏✅ 评论,大佬三连必回哦!thanks!!!
愿大家都能学有所得,功不唐捐!