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