AQS-初探

AQS

AQS是 ( Abstract Queued Synchronizer )是一个抽象的队列同步器,通过维护一个共享资源状态( Volatile Int State )和一个先进先出( FIFO )的线程等待队列来实现一个多线程访问共享资源的同步框架。

AQS原理

AQS 为每个共享资源都设置一个共享资源锁,线程在需要访问共享资源时首先需要获取共享资源锁,如果获取到了共享资源锁,便可以在当前线程中使用该共享资源,如果获取不到,则将该线程放入线程等待队列,等待下一次资源调度,具体的流程如图所示。
许多同步类的实现都依赖于AQS ,例如常用的 ReentrantLock、Semaphore、CountDownLatch、ReentrantReadWriteLock。

AQS-初探_第1张图片
Abstract Queued Synchronizer 维护了 volatile int 类型的变量,用于表示当前的同步状态。volatile虽然不能保证操作的原子性,但是能保证当前变量state的可见性。

state状态

函数

公平模式和抢占模式

你可能感兴趣的:(JAVA,java)