小蔡学Java

什么是AQS?(基础篇)

2024-03-02 11:45 876 0 JVM / JUC AQS

什么是AQS?

全称是 AbstractQueuedSynchronizer,即抽象队列同步器。它是 构建锁或者其他同步组件的基础框架

AQS常见的实现类

  • ReentrantLock 阻塞式锁
  • Semaphore 信号量
  • CountDownLatch 倒计时锁

AQS-基本工作机制

多个线程共同去抢这个资源是如何保证原子性的呢?

cas设置 state 状态,保证操作的原子性

总结(什么是AQS)

  • 是多线程中的队列同步器。是一种锁机制,它是 做为一个基础框架使用的像ReentrantLockSemaphore都是基于AQS实现的
  • AQS内部维护了一个 先进先出的双向队列,队列中存储的排队的线程
  • 在AQS内部还有一个属性state,这个state就相当于是一个资源,默认是0(无锁状态),如果队列中的有一个线程修改成功了state为1,则当前线程就相等于 获取了资源
  • 在对state修改的时候使用的cas操作,保证多个线程修改的情况下原子性

评论( 0 )

  • 博主 Mr Cai
  • 坐标 河南 信阳
  • 标签 Java、SpringBoot、消息中间件、Web、Code爱好者

文章目录