一、同步队列

1、线程加入队列因为CAS的使用变成串行的。

1、队列的线程因为中断或者因为出队第二个线程被唤醒。醒来的线程继续tryAcquire判断是否获得锁,如果获得则表示获得锁,否则可能继续wait或者for循环下去。

3、state表示了线程此时的状态

4、condition只能用于互斥的模式,不能用于share模式。

addWaiter()//循环CAS变更tair或者head,插入同步队列。实现线程不会阻塞
    public final void acquire(int arg) {
        if (!tryAcquire(arg) &&
            acquireQueued(addWaiter(Node.EXCLUSIVE), arg))
            selfInterrupt();
    }
原文地址:https://www.cnblogs.com/YDDMAX/p/5635445.html