CountDownLatch源码解析

本文详细介绍了CountDownLatch的用途,将其比喻为有N道门的同步器,线程通过await等待门开启,而countDown则逐渐开启门。文章通过分析源码揭示了await方法中利用AQS实现线程等待的机制,以及countDown方法如何减少计数并唤醒等待的线程。总结了CountDownLatch基于AQS的共享模式实现,并强调其在并发控制中的作用。
摘要由CSDN通过智能技术生成

总体介绍

一个同步器:能够让一个或者多个线程等待等待某个条件的到来再继续执行。
CountDownLatch模型
大家可以把CountDownLatch初始化的值认为是有N道门,刚开始是线程调用await方法发现门关着的,所以就只有等待。而外界条件的变化是通过countDown来实现,可以认为countDown一次就是打开一道门,当countDown的次数为N时,则全部的门打开,则刚才在await处等待的线程将继续执行任务。
看下具体的代码实现:

public class CountDownLatch {
   

    private static final class Sync extends AbstractQueuedSynchronizer {
   
        private static final long serialVersionUID = 4982264981922014374L;
     ...
    }

    private final Sync sync;
    public CountDownLatch(int count) {
   
        if (count < 0) throw new IllegalArgumentException("count < 0");
        this.sync = new Sync(count
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值