AQS总结

一、全称

  • AbstractQueueSynchronier

二、并发包的使用

ReentrantLock:new ReentrantLock()/lock()/unlock()
ReentranReadWriteLock
可重入锁:对同一个对象可以多次加锁

三、底层

1.抽象同步队列三个核心组件:加锁状态(state)+加锁线程+等待队列
2.初始的时候

state = 0
加锁线程=null

3.加锁的过程

Thread1通过CAS对state进行加锁,先看state是否
    等于0==>state++,加锁线程=Thread1
    不等于0==>再看看是不是自己加的锁,不是自己加的锁,放入等待队列中;是自己加的锁,state++(这个时候就实现了可重入锁)

四、总结

AQS是JUC的一个基础组件,用来实现各种锁(ReentrantLock,ReentrantReadWriteLock),同步工具(Semaphone,CountDownLatch,CyclicBarrier).
他底层有三个核心组件:state,加锁线程,等待队列
posted @ 2020-04-02 11:23  木叶小寒江  阅读(92)  评论(0编辑  收藏  举报