AQS核心原理总结

​导图(用于总结和复习)

​​

​AQS框架

定义:aqs(AbstractQueuedSynchronizer)是一个用来构建锁或者其他同步器的基础框架。包括常用的独占锁:ReentrantLock。共享锁:CountDownLatch、​CyclicBarrier、Semaphore等。

核心原理:
aqs的实现原理靠三个核心:
1. FIFO队列实现线程等待排队,把没有竞争到锁的线程放入队列。队列的每个节点存储了线程、上节点、下节点、waitStatus。其中线程用来记录排队的线程,上下节点用来做双向链表把前后节点连接起来,waitStatus用来记录等待状态。并且用head和tail分表指向头节点和尾节点,头节点的 thread=null,是一个用来管理下一个节点的空节点。
(FIFO:First Input First Output,先进先出)

如何设计一个高并发的系统架构 (2).jpg

2. 使用​CAS维护一个 volatile int state 来表示同步状态。FIFO队列里的线程采用自旋+CAS维护state。

​3. LockSupport维护线程阻塞和唤醒。使用LockSupport.park()和LockSupport.unpark()方法来维护线程的阻塞和唤醒,放入FIFO队列的线程使用 LockSupport.park() 阻塞起来,等待获取到锁的线程 unpark 唤醒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值