标签:状态 还原 stat tst 没有 队列 lock ble 相关
AbstractQueuedSynchronize 抽象队列同步器 类:
简介:
-提供了一个框架来实现阻塞锁和依赖先进先出(FIFO:first-in-first-out)等待对列的相关同步器(信号量、事件等)
此类被设计为对大多数依赖单原子 int 值来表示状态的同步器来说非常有用,子类必须定义那些 改变状态 以及 定义该状态对于被获取或释放有意义的protected方法
鉴于此,此类的其他方法执行所有队列和阻塞机制
-子类可以维护其他状态字段,到那时只能原子更新 int 值通过使用方法getState、setState、compareAndSetState来跟踪于遵守同步器
子类应该定义non-public的内部类帮助器,用于实现其封闭类的同步属性,AbstractQueuedSynchronize不实现任何同步接口,相反他定义了像acquireInterruptible这样的方法,
可以被具体的 锁 和相关同步器作为适当的调用实现他们的公共方法
-该类默认支持独占和共享模式:以独占模式获取时,其他线程尝试获取操作无法成功;共享模式被多个线程获取可能(但不一定)成功
除了机械意义上的差异,当共享模式获取成功时,下一个等待线程也许确定它是否也可以获取成功,在不同的模式下等待的线程共享相同的FIFO queue
通常子类只支持其中一种模式,但是两种模式都可以发挥作用,例如:ReadWriteLock中。只支持其中一种模式的不需实现另一种未使用的模式
-该类定义了一个嵌套类:ConditionObject,通过子类支持排他模式,可以作为Condition使用
方法release使用当前getState值调用,完全释放这个对象,并且acquire方法给定这个保存的状态值,最终这个对象恢复到他以前获取得的状态
没有AQS方法创建这样一个条件,所以不满足这个约束,不要使用它。ConditionObject的行为取决于他的同步器实现的语义
-该类作为内部queue提供检查、检测、和监视方法,以及conditionObject对象提供类似的方法。可以根据使用AQS将他们导出到类中,使用他们的同步机制
-该类的序列化只存储底层原子int维护状态,因为反序列化对象具有空队列,需要序列化典型的子类定义一个readObject方法,该方法在反序列化时将还原为已知的初始状态
AQS:AbstractQueuedSynchronize类
标签:状态 还原 stat tst 没有 队列 lock ble 相关
原文地址:https://www.cnblogs.com/gsanye/p/11192166.html