CountDownLanch 深度解析

本文深入探讨了Java中的CountDownLatch,解释了其在等待多个线程完成任务时的作用。通过一个生动的场景,描述了CountDownLatch如何工作,包括await方法使得线程等待,以及所有线程完成后如何唤醒等待的线程。文章还提到了CountDownLatch内部的节点判断与唤醒机制,适合对并发编程感兴趣的读者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CountDownLatch 深度解析

涉及到到函数

public CountDownLatch(int count) {
        if (count < 0) throw new IllegalArgumentException("count < 0");
        this.sync = new Sync(count);
}
private static final class Sync extends AbstractQueuedSynchronizer {
        private static final long serialVersionUID = 4982264981922014374L;

        Sync(int count) {
            setState(count);
        }

        int getCount() {
            return getState();
        }

        protected int tryAcquireShared(int acquires) {
            return (getState() == 0) ? 1 : -1;		// 全到时返回1,未全到时返回-1
        }

		// 比如是这样一个场景:
		// 一个组长等待三个员工,这个函数作用就是修改state变量
		// 对应于这个事例就是修改已到达到员工数 
        protected boolean tryReleaseShared(int releases) {
            for (;;) {
                int c = getState();
                if (c == 0)
                    return false;
                int nextc = c-1;
                if (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值