Java 并发编程:多线程并发控制工具 CountDownLatch,实现原理及案例

本文介绍了Java并发编程中的CountDownLatch,一种同步器。它允许线程在满足特定条件(计数器为0)后继续执行。CountDownLatch基于AQS实现,主要包含构造时设置的计数器、await方法(等待条件满足)和countDown方法(减少计数器)。文章通过两个案例展示了如何在多线程场景中使用CountDownLatch进行并发控制。

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

闭锁(CountDownLatch)是Java多线程并发中的一种同步器,它是JDK内置的同步器。通过它可以定义一个倒计数器,当倒计数器的值大于0时,所有调用await方法的线程都会等待。而调用countDown方法则可以让倒计数器的值减一,当倒计数器值为0时所有等待的线程都将继续往下执行。

闭锁的主要应用场景是让某个或某些线程在某个运行节点上等待N个条件都满足后才让所有线程继续往下执行,其中倒计数器的值为N,每满足一个条件倒计数器就减一。比如下图中,倒计数器初始值为3,然后三个线程调用await方法后都在等待。随后倒计数器减一为2,再减一为1,最后减一为0,所有等待的线程都往下继续执行。

 

三要素

闭锁的三要素为:倒计数器的初始值、await方法以及countdown方法。倒计数器的初始值在构建CountDownLatch对象时指定,它表示我们需要等待的条件个数。await方法能让线程进入等待状态,等待的条件是倒计数器的值大于0。countdown方法用于将倒计数器的值减一。

实现原理

先前介绍过如何基于AQS同步器实现一个自定义同步器,实际上Countd

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值