← 返回专栏列表

并发算法系列

共 6 篇文章

1. 并发算法 #01:CAS 与 ABA 问题

> CAS(Compare-And-Swap)是无锁并发编程的基石,是一条原子指令:仅当内存值等于预期值时,才将其更新为新值。Java 的 AtomicInteger、ConcurrentHashMap、无锁队列均以 CAS 构建。本文深入 CAS 的硬件实现、ABA 问题及修复方案,以及无锁算法的三个层次。 相关文章…

2. 并发算法 #02:AQS(AbstractQueuedSynchronizer)

> AQS(AbstractQueuedSynchronizer)是 Java 并发包的核心基础框架,通过一个 volatile int state 字段和 CLH 变体双向队列,为 ReentrantLock、Semaphore、CountDownLatch 等同步器提供统一的线程排队、阻塞、唤醒机制。 相关文章:C…

3. 并发算法 #03:MVCC(多版本并发控制)

> MVCC(Multi-Version Concurrency Control,多版本并发控制)通过保留数据的历史版本,实现"读不阻塞写、写不阻塞读",是 MySQL InnoDB、PostgreSQL、Oracle 等主流数据库实现高并发事务隔离的核心机制。 相关文章:CAS 与 ABA 问题 · AQS(Abst…

4. 并发算法 #04:无锁队列(Michael-Scott Queue)

> Michael-Scott 无锁队列通过 CAS 操作替代互斥锁实现线程安全的 FIFO 队列,被 Java 、Disruptor 等高性能框架广泛采用,在高并发场景下显著降低锁竞争开销。 相关文章:CAS 与 ABA 问题 · Disruptor(无锁环形缓冲) · RCU(Read-Copy-Update) -…

5. 并发算法 #05:Disruptor(无锁环形缓冲)

> Disruptor 是 LMAX 开发的无锁环形缓冲队列,通过预分配内存、CAS Sequence、缓存行填充解决高并发下 ArrayBlockingQueue 的锁竞争与 GC 压力问题,被 Log4j2、Netty、Storm 等系统用于实现每秒千万级消息吞吐。 相关文章:CAS 与 ABA 问题 · 无锁队列…

6. 并发算法 #06:RCU(Read-Copy-Update)

> RCU(Read-Copy-Update)是一种读者完全无锁、写者通过"复制新版本 + 原子替换指针 + 等待旧读者完成后释放旧版本"实现并发安全的同步机制,被 Linux 内核路由表、模块列表、网络协议栈等读多写极少场景广泛使用,读侧开销接近零。 相关文章:无锁队列(Michael-Scott Queue) · …