AQS原理

简介: AQS原理

AQS, AbstractQueuedSynchronizer ,抽象队列同步器,定义了一套多线程访问共享资源的同步器框 架,许多并发工具的实现都依赖于它,如常用的 ReentrantLock/Semaphore/CountDownLatch 。

AQS使用一个 volatile 的int类型的成员变量 state 来表示同步状态,通过CAS修改同步状态的值。当 线程调用 lock 方法时 ,如果 state =0,说明没有任何线程占有共享资源的锁,可以获得锁并将 state 加1。如果 state 不为0,则说明有线程目前正在使用共享变量,其他线程必须加入同步队列进行等待。

privatevolatileintstate;//共享变量,使用volatile修饰保证线程可见性

同步器依赖内部的同步队列(一个FIFO双向队列)来完成同步状态的管理,当前线程获取同步状态失败 时,同步器会将当前线程以及等待状态(独占或共享 )构造成为一个节点(Node)并将其加入同步队 列并进行自旋,当同步状态释放时,会把首节点中的后继节点对应的线程唤醒,使其再次尝试获取同步 状态。

image.png

相关文章
|
2月前
|
存储 Java
JAVA并发编程AQS原理剖析
很多小朋友面试时候,面试官考察并发编程部分,都会被问:说一下AQS原理。面对并发编程基础和面试经验,专栏采用通俗简洁无废话无八股文方式,已陆续梳理分享了《一文看懂全部锁机制》、《JUC包之CAS原理》、《volatile核心原理》、《synchronized全能王的原理》,希望可以帮到大家巩固相关核心技术原理。今天我们聊聊AQS....
|
6月前
|
存储 设计模式 算法
队列同步器AQS-AbstractQueuedSynchronizer 原理分析
队列同步器AQS-AbstractQueuedSynchronizer 原理分析
96 0
图解ReentrantLock底层公平锁和非公平锁实现原理
图解ReentrantLock底层公平锁和非公平锁实现原理
182 0
|
Java 程序员 API
AQS 原理解读
AQS 原理解读
|
安全
AQS学习:ReentrantLock源码解析
AQS学习:ReentrantLock源码解析
50 0
AQS(abstractQueuedSynchronizer)锁实现原理详解
AQS(abstractQueuedSynchronizer)抽象队列同步器。其本身是一个抽象类,提供lock锁的实现。聚合大量的锁机制实现的共用方法。
151 0
|
Java API
图解ReentrantReadWriteLock读写锁的实现原理(上)
图解ReentrantReadWriteLock读写锁的实现原理
207 0
图解ReentrantReadWriteLock读写锁的实现原理(上)
图解ReentrantReadWriteLock读写锁的实现原理(下)
图解ReentrantReadWriteLock读写锁的实现原理
124 0
图解ReentrantReadWriteLock读写锁的实现原理(下)
|
机器学习/深度学习 Java 调度
浅谈AQS原理
经典八股文之AQS原理
197 0