ConcurrentHashMap的十五年演进:从分段锁到CAS如何重塑Java并发基石

2003年,Doug Lea向JCP提交了JSR-166规范提案,试图为Java引入一套标准化的并发工具库。在此之前,Java开发者面对并发场景时只能在synchronized、Hashtable和Collections.synchronizedMap之间做出选择——它们要么过于粗粒度,要么性能堪忧。ConcurrentHashMap作为这套工具库的核心组件之一,其设计理念影响了此后二十年Java并发编程的范式。 ...

12 min · 5720 words

一个int变量如何支撑起Java并发包的半壁江山:AQS的设计哲学与实现原理

2004年,Doug Lea在POC CSJP Workshop上发表了一篇题为《The java.util.concurrent Synchronizer Framework》的论文。这篇论文的核心贡献是提出了一个统一的同步器框架——AbstractQueuedSynchronizer(AQS),它用一个int类型的state变量和一个FIFO队列,解决了Java并发编程中几乎所有同步原语的实现问题。 ...

9 min · 4246 words

无锁编程的内存困境:为什么最难的竟不是算法本身

2015年,Rust核心团队成员Aaron Turon发布了一个名为Crossbeam的库。他在博客中写道:“如果我问Rust社区,构建锁-free数据结构最大的障碍是什么,答案几乎总是一样的——内存管理。” ...

13 min · 6441 words