2.2 next
同步队列的后继节点,条件队列没有这个概念。
2.3 thread
竞争资源的线程。
2.4 nextWaiter
条件队列的下一个节点,同步队列没有这个概念。
2.5 waitStatus
队列中节点的等待状态。
-
static final int CANCELLED = 1;
此节点的线程被取消 独占模式 共享模式 -
static final int SIGNAL = -1;
此节点的后继节点线程被挂起,需要被唤醒 独占模式 -
static final int CONDITION = -2;
此节点的线程在等待信号,也表明当前节点不在同步队列中,而在条件队列中 -
static final int PROPAGATE = -3;
此节点下一个acquireShared应该无条件传播 共享模式
这四个属性就是waitStatus属性的具体状态,还有一个隐式的具体状态,即waitStatus初始化时为0。在独占模式下,我们只需要用到CANCELLED和SIGNAL,这里需要注意的是SIGNAL,它代表的不是自己线程的状态,而是它后继节点的状态,当一个节点的waitStatus被置为SIGNAL时,表明此节点的后继节点被挂起,当此节点释放锁或被取消放弃拿锁时,应该唤醒后继节点。而在共享模式时,我们会