该死的线程池,是时候安排一下了
前言 线程池可以说是 Java 进阶必备的知识点了,也是面试中必备的考点,可能不少人看了 这篇文章 后能对线程池工作原理说上一二,但这还远远不够,如果碰到比较有经验的面试官再继续追问,很可能会被吊打,考虑如下问题: Tomcat 的线程池和 JDK 的线程池实现有啥区别, Dubbo 中有类似 Tomcat 的线程池实现吗? 我司网关 dubbo 调用线程池曾经出现过这样的一个问题:压测时接口可以正常返回,但接口 RT 很高,假设设置的核心线程大小为 500,最大线程为 800,缓冲队列为 5000,你能从这个设置中发现出一些问题并对这些参数进行调优吗? 线程池里的线程真的有核心线程和非核心线程之分? 线程池被 shutdown 后,还能产生新的线程? 线程把任务丢给线程池后肯定就马上返回了? 线程池里的线程异常后会再次新增线程吗,如何捕获这些线程抛出的异常? 线程池的大小如何设置,如何 动态设置 线程池的参数 线程池的状态机画一下? 阿里 Java 代码规范为什么不允许使用 Executors 快速创建线程池? 使用线程池应该避免哪些问题,能否简单说下线程池的最佳实践? 如何优雅关闭线程池 如何对线程池进行监控 相信不少人看了这些问题会有些懵逼 其实这些问题的答案大多数都藏在线程池的源码里,所以深入了解线程池的源码非常重要,本章我们将会来学习一下线程池的源码,相信看完之后