AQS--AbstractQueuedSynchronizer

1. 概念

  内部使用队列:先进先出

2. 方法

       独占式获取:accquire、acquireInterruptibly、tryAcquireNanos

  共享式获取:acquireShared、acquireSharedInterruptibly、tryAcquireSharedNanos

  独占式释放锁:release

  共享式释放锁:releaseShared

  需要子类覆盖的流程方法

    独占式获取  tryAcquire

    独占式释放  tryRelease

    共享式获取 tryAcquireShared

    共享式释放  tryReleaseShared

    这个同步器是否处于独占模式  isHeldExclusively

 

  同步状态state:

  getState:获取当前的同步状态

  setState:设置当前同步状态

  compareAndSetState 使用CAS设置状态,保证状态设置的原子性

AQS中的数据结构-节点和同步队列

竞争失败的线程会打包成Node放到同步队列,Node可能的状态里:

CANCELLED线程等待超时或者被中断了,需要从队列中移走

SIGNAL后续的节点等待状态,当前节点,通知后面的节点去运行

CONDITION :当前节点处于等待队列

PROPAGATE:共享,表示状态要往后面的节点传播

0,  表示初始状态

posted on 2019-02-08 18:57  1625101366  阅读(73)  评论(0)    收藏  举报

导航