AQS抽象队列同步器

青春壹個敷衍的年華 提交于 2020-02-02 03:09:59
AQS

AQS:AbstractQqueuedSynchronizer,抽象队列同步器,可以认为是一个模板,提供一个框架,用于实现依赖先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量,事件等)。

提供了对资源占用、释放,线程的挂起、唤醒的逻辑。
预留了各种try方法给用户实现
可以用在各种需要控制资源争用的场景中。(ReentrantLock/CountDownLatch/Semphore)

使用

1、方法
主要有以下几个方法:
acquire(int arg)
release(int arg)
acquireShared(int arg)
releaseShared(int arg)
以上4个方法都是有final修饰的,不可以修改
try开头的4个方法,都会抛出一个异常,留给用户重写
tryAcquire(int arg)
tryRelease(int arg)
tryAcquireShared(int arg)
tryReleaseShared(int arg)
2、字段
int state :同步状态或者说重入次数
Thread owner:占有锁的线程
Queue:阻塞队列

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!