• Java多线程同步实现

    本文出自:【InTheWorld的博客】

    说实话,我在准备探究Java线程同步的实现原理时,并没有听说过AbstractQueuedSynchronizer。所以作为一个昨天才第一次听说的自旋锁实现方式,AQS成功地吸引了我。AQS的实现基于CLH锁(Craig, Landin, and Hagersten Lock),这种数据结构的特点在于把“临界数据”和“进程控制”同时实现。相比于我以前看到的方法,这种实现明显更加高效和简洁。在Java concurrent库中,AQS是最重要的基础之一。

    • AbstractQueuedSynchronizer的原理

    一个同步线程工具大致要实现以下三个功能:

    1. 原子地管理同步状态
    2. 阻塞和唤醒线程
    3. 管理线程队列

    对于第一个功能,AQS使用了一个int型的字段来管理锁的状态。类似于物理硬件的compareAndSwap原子指令,Java【查看更多】