AbstractQueuedSynchronizer Source

不添加Node到queue

  • tryAcquire 可以获得锁
  • tryAcquireShared 可以获得锁

进入queue

pred.waitStatus == SIGNAL ==> park
pred.waitStatus == CANCELED ==> 更新祖先节点,直到祖先节点不为CANCELED的节点
其他 => 更新祖先节点为SIGNAL , park

acquireQueued

setHead(node),原先的head被移除

waitStatus

enq : 0
被下一个enq:更新为SINGAL
被unparkSuccessor:更新为:0
cancelAcquire:当超时或interrept,更新为CANCELLED