若有收获,请记得分享和转发哦
这两面试题是基友朋友最近去面滴滴遇到的,今天就借着这两面试真题来深入一波线程池吧,这篇文章力求把线程池核心点和常问的面试点一网打尽,当然个人能力有限,可能会有遗漏,欢迎留言补充!
先把问题列出来,如果你都答得出来,那没必要看下去:
为什么会有线程池?
简单手写一个线程池?
为什么要把任务先放在任务队列里面,而不是把线程先拉满到最大线程数?
线程池如何动态修改核心线程数和最大线程数?
如果你是 JDK 设计者,如何设计?
如果要让你设计一个线程池,你要怎么设计?
你是如何理解核心线程的?
你是怎么理解 KeepAliveTime 的?
那 workQueue 有什么用?
你是如何理解拒绝策略的?
你说你看过源码,那你肯定知道线程池里的 ctl 是干嘛的咯?
你知道线程池有几种状态吗?
你知道线程池的状态是如何变迁的吗?
如何修改原生线程池,使得可以先拉满线程数再入任务队列排队?
Tomcat 中的定制化线程池实现 如果线程池中的线程在执行任务的时候,抛异常了,会怎么样?
原生线程池的核心线程一定伴随着任务慢慢创建的吗?
线程池的核心线程在空闲的时候一定不会被回收吗?
接得住吗?话不多说,发车!