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的共享实现)
当前网址:https://www.cdcxhl.com/article22/pgohjc.html
成都网站建设公司_创新互联,为您提供微信公众号、企业建站、网站收录、网站建设、网站设计公司、云服务器
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联