文章
已发布的全部文章。
并发 Map、List 和 Set 的实现权衡
比较 ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentSkipListMap 和并发 Set 的一致性与成本。
Semaphore、CountDownLatch 与 CyclicBarrier
按并发许可、一次性汇合和重复阶段三个需求选择 Semaphore、CountDownLatch 与 CyclicBarrier。
AQS 与 ReentrantLock 源码主线
沿着 state、tryAcquire、等待队列、park、unpark 和 release 阅读 AQS 与 ReentrantLock 的源码主线。
CAS、ABA 与 Atomic 原子类
用 AtomicStampedReference 复现 ABA,理解 Compare-And-Set 的原子更新、失败重试和竞争代价。
synchronized 的实现、锁状态与适用边界
从 monitorenter、monitorexit 和监视器膨胀理解 synchronized,并纠正现代 JDK 中过时的固定锁升级说法。
JMM、Happens-Before 与三类并发性质
用计数器和发布对象示例理解原子性、可见性、有序性,以及 volatile、锁和线程启动建立的先行发生关系。
线程生命周期、等待通知与中断协议
从线程状态、join、wait/notify 到 interruption,建立不会丢失取消信号的线程协作协议。
JDK 升级与 JVM 性能回归
设计可重复的 JDK 17、21、25 性能对比,识别预热、默认收集器、参数语义和运行时行为变化。
GC 调优方法:目标、基线、变更与复测
用吞吐、P99、暂停预算、分配速率和存活集驱动 GC 调优,每次只改变一个可解释变量。
常量池、字符串与类元数据的内存代价
区分 Class 常量池、运行时常量池与字符串驻留池,并用实验观察 intern、类加载和类卸载边界。