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

AQS核心原理总结

​​

AQS核心原理总结

​AQS框架

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

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

AQS核心原理总结

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

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

相关文章:

  • 2021-07-11
  • 2021-07-28
  • 2021-06-17
  • 2021-07-17
  • 2021-11-25
猜你喜欢
  • 2022-12-23
  • 2021-11-26
  • 2021-08-08
  • 2022-12-23
  • 2021-06-06
  • 2021-08-26
  • 2021-04-11
相关资源
相似解决方案