千家信息网

CountDownLatch有哪些用法

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"CountDownLatch有哪些用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"CountDownLatch有哪些用法"吧!Coun
千家信息网最后更新 2026年10月31日CountDownLatch有哪些用法

本篇内容主要讲解"CountDownLatch有哪些用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"CountDownLatch有哪些用法"吧!

CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。

CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。

CountDownLatch的用法

CountDownLatch典型用法:1、某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为new CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1 countdownLatch.countDown(),当计数器的值变为0时,在CountDownLatch上await()的线程就会被唤醒。一个典型应用场景就是启动一个服务时,主线程需要等待多个组件加载完毕,之后再继续执行。

CountDownLatch典型用法:2、实现多个线程开始执行任务的最大并行性。注意是并行性,不是并发,强调的是多个线程在某一时刻同时开始执行。类似于赛跑,将多个线程放到起点,等待发令枪响,然后同时开跑。做法是初始化一个共享的CountDownLatch(1),将其计算器初始化为1,多个线程在开始执行任务前首先countdownlatch.await(),当主线程调用countDown()时,计数器变为0,多个线程同时被唤醒。

举个栗子:

package com.example.demo.CountDownLatchDemo;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 主线程等待子线程执行完成再执行 */public class CountdownLatchTest {public static void main(String[] args) {        ExecutorService service = Executors.newFixedThreadPool(3);final CountDownLatch latch = new CountDownLatch(3);for (int i = 0; i < 3; i++) {            Runnable runnable = new Runnable() {                @Overridepublic void run() {try {                        System.out.println("子线程" + Thread.currentThread().getName() + "开始执行");                        Thread.sleep((long) (Math.random() * 10000));                        System.out.println("子线程"+Thread.currentThread().getName()+"执行完成");                        latch.countDown();//当前线程调用此方法,则计数减一} catch (InterruptedException e) {                        e.printStackTrace();                    }                }            };            service.execute(runnable);        }try {            System.out.println("主线程"+Thread.currentThread().getName()+"等待子线程执行完成...");            latch.await();//阻塞当前线程,直到计数器的值为0System.out.println("主线程"+Thread.currentThread().getName()+"开始执行...");        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

到此,相信大家对"CountDownLatch有哪些用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

线程 计数器 多个 任务 典型 同时 之间 内容 同步 学习 实用 更深 最大 接下来 作用 做法 兴趣 发令枪 场景 实用性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 湖北九亚互联网络科技有限公司 山东特亿宝互联网科技有限公司 云信互联网科技有限公司 国智互联网科技 智能科技公司是互联网公司吗 互联网科技股票 科技大学互联网专业好不好 南山科技园互联网公司有哪些 千方科技属于互联网企业吗 国大互联网教育科技有限公司工作 畅思互联网科技 互联网第三次科技革命特征 伍佰万互联网科技怎么赚钱 黑云互联网科技有限公司 21世纪互联网科技成就 互联网科技年终奖 互联网科技融合创新 全球科技与互联网公司市值变化 江苏互联网智能科技产品出厂价 互联网科技公司官网 广西拼得多互联网科技有限公司 互联网之后的科技是什么 互联网对科技的发展 湖北码尼互联网科技有限公司电话 阿大互联网科技有限公司 互联网科技和信息 中国互联网公司排名锤子科技 伍佰万互联网科技怎么赚钱 安徽九吞吴互联网科技有限公司
0