动态代理:JDK 代理与 CGLIB

拆解动态代理的本质——运行时生成代理类、拦截方法调用,讲清 JDK 动态代理的 Proxy + InvocationHandler 与 CGLIB 的 Enhancer + MethodInterceptor 两种实现,它们对接口与类的不同要求、反射与字节码的取舍,以及 Spring AOP 怎么选。

Java动态代理JDK 代理CGLIBInvocationHandlerMethodInterceptorSpring AOP字节码

垃圾回收算法与收集器:从 Serial 到 ZGC

从可达性分析讲起,拆解标记-清除、复制、标记-整理三种基础 GC 算法,说明分代收集为什么新生代用复制、老年代用整理,再沿 Serial、Parallel、CMS、G1、ZGC 的演进讲清吞吐量优先与低停顿优先两条路线,最后给出收集器选型。

JavaGC垃圾回收标记清除复制算法标记整理G1ZGCCMS分代收集

synchronized 与 ReentrantLock:锁升级与 AQS

从 synchronized 锁的 Monitor 讲起,拆解无锁、偏向锁、轻量级锁、重量级锁的升级过程,再讲 ReentrantLock 底层的 AQS(state + CLH 队列 + CAS)和 CAS 的乐观锁思想,最后给出两者的选型。

JavasynchronizedReentrantLockAQSCAS锁升级偏向锁轻量级锁MonitorCondition

ThreadLocal:线程私有变量、ThreadLocalMap 与内存泄漏

深入 ThreadLocal 源码:ThreadLocalMap 的开放地址法与线性探测、threadLocalHashCode 的黄金分割散列、set/get 的完整流程、Entry 的弱引用 key 与强引用 value 的引用链、expungeStaleEntry/cleanSomeSlots/rehash 的清理与扩容,以及内存泄漏的精确成因。

JavaThreadLocalThreadLocalMap线性探测弱引用强引用expungeStaleEntry内存泄漏InheritableThreadLocal

线程池:参数、状态机与线程复用

深入 ThreadPoolExecutor 源码:七个参数、ctl 高 3 位状态与低 29 位线程数、五种状态及转换、execute 的完整流程、Worker/runWorker/getTask 的线程复用循环、allowCoreThreadTimeOut 回收核心线程、四种拒绝策略与队列选择。

Java线程池ThreadPoolExecutorctl状态机WorkergetTask拒绝策略线程复用