详解AQS中的condition源码原理( 二 )


int ws = p.waitStatus;if (ws > 0 || !p.compareAndSetWaitStatus(ws, Node.SIGNAL)) LockSupport.unpark(node.thread);6.如果是signalAll方法,则等待队列中每个节点都执行一次signal方法,全部移入同步队列中并唤醒(唤醒后他们很可能还会因为抢不到资源而阻塞 , 但队列位置不同了,也无法再通过sign唤醒了)
do { Node next = first.nextWaiter; first.nextWaiter = null; transferForSignal(first);first = next;} while (first != null);点击关注 , 第一时间了解华为云新鲜技术~
【详解AQS中的condition源码原理】

推荐阅读