标签:源码 pre and rup ext red head ssh 图片
1、CountDownLatch介绍1、Thread-1执行await,等待主线程放行;
2、Thread-2执行await,等待主线程放行;
3、主线程执行countDown()放行。
1、CountDownLatch的初始计数器就是直接设置AQS的同步状态值state
2、countDown就是对state执行减1
3、当state为0的时候,放行。
只要state是0,则所有获取资源的申请都会成功,这就是共享锁的含义。
此时,自旋获取一次也会失败,会进行阻塞,进入【等待队列】
private void setHeadAndPropagate(Node node, int propagate) {
Node h = head; // Record old head for check below
setHead(node);//设置当前节点为头节点
if (propagate > 0 || h == null || h.waitStatus < 0 ||
(h = head) == null || h.waitStatus < 0) {
Node s = node.next;
if (s == null || s.isShared()) //后继节点如果是共享的,则依次唤醒后继节点,这就是共享的原理
doReleaseShared();
}
}
多线程(十二、AQS原理-CountDownLatch基于AQS的共享实现)
标签:源码 pre and rup ext red head ssh 图片
原文地址:https://blog.51cto.com/janephp/2410908