倒计数器:CountDownLatch

CountDownLatch 是 Java 中用于多线程编程的一个同步工具。
它允许一个或多个线程等待其他线程执行完特定操作后再继续执行。
CountDownLatch 通过一个计数器来实现,
该计数器初始化为一个正整数,每当一个线程完成了指定操作,计数器就会减一。
当计数器变为零时,所有等待的线程将被唤醒,可以继续执行后续操作。
CountDownLatch 在并发编程中常用于等待多个线程完成某个任务,
然后再进行下一步操作。

倒计数器,门闩的含义就是把门锁起来,不让里面的线程跑出来。
因此,这个工具通常用来控制线程等待,它可以让某一个线程等待
直到倒计数结束再开始执行。

public class CountDownLatchDemo implements Runnable{static final CountDownLatch end = new CountDownLatch(10);static final CountDownLatchDemo demo = new CountDownLatchDemo();@Overridepublic void run() {try{Thread.sleep(new Random().nextInt(10)*1000);System.out.println("check complete");end.countDown();}catch (InterruptedException e){e.printStackTrace();}}public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(10);for(int i =0;i<10;i++){executorService.submit(demo);}try {end.await();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("Finish!");executorService.shutdown();}
}

生成一个CountDownLatch实例,计数数量为10,
这表示需要10个线程完成任务等待在CountDownLatch上的线程才能继续执行。
代码中使用CountDownLatch.countdown()方法,通知CountDownLatch,
一个线程已经完成了任务,倒计数器减1.
CountDownLatch.await()方法,要求主线程等待所有检查任务全部完成,
待10个任务全部完成后,主线程才能继续执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 总结 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库&#xff0c;专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式…

【深度学习】序列生成模型(六):评价方法计算实例:计算ROUGE-N得分【理论到程序】

文章目录 一、BLEU-N得分&#xff08;Bilingual Evaluation Understudy&#xff09;二、ROUGE-N得分&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09;1. 定义2. 计算N1N2 3. 程序 给定一个生成序列“The cat sat on the mat”和两个参考序列“The c…

JavaSE 搜索树

目录 1 概念2 操作2.1 查找2.2 插入2.3 删除 3 性能分析4 和 java 类集的关系 1 概念 二叉搜索树 又称 二叉排序树&#xff0c;它是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b;若它…

js使用promise对象达到promise waiting

async getInfoFormName() {return new Promise((resolve, reject) > {let infoForm: string;if (this.showBox "basic-info-box") {infoForm "basicInfoForm";} else {infoForm "extendInfoForm";}resolve(infoForm);});} 使用这个Priomi…

[Java][File]文件的创建与删除

对一个File类型的对象而言 1.创建一个新的空的文件 createNewFile 2.制作单级文件夹 mkdir 3.制作多级文件夹 mkdirs 4.删除文件、空文件夹 delete 注意&#xff1a;这个方法不会走回收站的 import java.io.File; import java.io.IOException;public class Main{public static …

Logistic Regression逻辑线性回归(基于diabetes数据集)

目录 介绍&#xff1a; 1、Confusion Matrix&#xff1a; 2、ROC&#xff08;Receiver Operating Characteristic&#xff09; 一、数据处理 二、建模 三、 confusion_matrix 四、 ROC&#xff08;Receiver Operating Characteristic&#xff09; 介绍&#xff1a; L…

class085 数位dp-下【算法】

class085 数位dp-下【算法】 code1 P2657 [SCOI2009] windy 数 // windy数 // 不含前导零且相邻两个数字之差至少为2的正整数被称为windy数 // windy想知道[a,b]范围上总共有多少个windy数 // 测试链接 : https://www.luogu.com.cn/problem/P2657 // 请同学们务必参考如下代码…

好习惯的重要性

养成习惯的五个步骤 提高认识 引导孩子对养成某个习惯产生兴趣明确规范 让孩子对养成某个好习惯的具体规范持久训练 坚持不懈的行为规范&#xff0c;让孩子由被动到主动再到自动及时评估 让孩子在成功的体验中养成良好习惯形成环境 让家庭生活和学校环境乃至社会风气成为孩子养…

7款创意性前端源码特效资源分享(附在线预览效果)

分享7款非常不错炫酷的前端特效源码 其中包含css动画特效、js原生特效、svg特效等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 CSS绘制iPhone 14带动态岛 纯CSS绘制iPhone 14带动态岛模型 运行初始化时还附带出场动画 …

微信小程序动态导航栏(uniapp + vant)

本文使用到vant的van-tabbar组件来实现 一、uniapp整合vant ui vant小程序版本:https://vant-contrib.gitee.io/vant-weapp/#/home 注:vant并没有uniapp的版本,所以此处是引入小程序版本的ui 1. 下载vant编译后代码 https://github.com/youzan/vant-weapp/tree/dev/dist 2…

vue中对keep-alive的理解

vue中对keep-alive的理解 介绍使用方法参数解析使用示例 介绍 keep-alive是 Vue 内置的一个组件&#xff0c;可以使被包含的组件保留状态&#xff0c;或避免重新渲染。它有两个属性: include(包含的组件缓存) 与 exclude(排除的组件不缓存&#xff0c;优先级大于include) 。 使…

CentOs7.x安装部署SeaTunnelWeb遇到的坑

CentOs7.x安装部署SeaTunnelWeb遇到的坑 文章目录 1. 环境2. SeaTunnel安装部署2.1下载安装包2.2 设置环境变量2.3 安装连接器插件2.4 拷贝jar包到lib下2.5 启动命令2.6 执行官方client提交任务demo 3. SeaTunnel-Web安装部署3.1 下载安装包3.2 初始化数据库脚本或修改配置appl…

element plus 表格el-table行多选单选

1 行多选-点击checkbox 添加一个 el-table-column&#xff0c;设 type 属性为 selection 即可 <template><div class"box"><el-table :data"tableData" selection-change"handleSelectionChange"><el-table-column type&…

【单调栈】LeetCode:1944队列中可以看到的人数

作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 题目 有 n 个人排成一个队列&#xff0c;从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights &#xff0c;每个整数 互不相同&#xff0c;heights[i] 表示第 i 个人的高度。 一个人能 看到 他右边另一个人…

计算机网络 运输层下 | TCP概述 可靠传输 流量控制 拥塞控制 连接管理

文章目录 3 运输层主要协议 TCP 概述3.1 TCP概述 特点3.2 TCP连接RSVP资源预留协议 4 TCP可靠传输4.1 可靠传输工作原理4.1.1 停止等待协议4.1.2 连续ARQ协议 4.2 TCP可靠通信的具体实现4.2.1 以字节为单位的滑动窗口4.2.2 超时重传时间的选择4.2.3 选择确认SACK 5 TCP的流量控…

(C)一些题14

1.下列定义不正确的是&#xff08;C A .# define PI 3.141592 C . int max ( x , y ); int x , y ;{} B .# define S 345 D . static char c ; 函数没有定义x&#xff0c;y的类型 2&#xff0e;以下程序段的输出结果为&#xff08;D char c []" abc "; int i …

边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案

随着ChatGPT生成式人工智能的爆发&#xff0c;AI技术在业界又掀起一波新浪潮。值得关注的是&#xff0c;边缘AI智能也在AI人工智能技术进步的基础上得到了快速发展。IDC跟踪报告数据显示&#xff0c;2021年我国的边缘计算服务器整体市场规模达到33.1亿美元&#xff0c;预计2020…

前端面试题(计算机网络):GET和POST的请求的区别是什么?

声明&#xff1a;什么是幂等请求&#xff1f;答&#xff1a;不管对同一资源请求多少次返回的结果都相同 Post 和 Get 是 HTTP 请求的两种方法&#xff0c;其区别如下&#xff1a; 应用场景&#xff1a; GET 请求是一个幂等请求&#xff0c;一般 Get 请求用于对服务器资源不会…

2023年中国法拍房用户画像和数据分析

法拍房主要平台 法拍房主要平台有3家&#xff0c;分别是阿里、京东和北交互联平台。目前官方认定纳入网络司法拍卖的平台共有7家&#xff0c;其中阿里资产司法拍卖平台的挂拍量最大。 阿里法拍房 阿里法拍房数据显示2017年&#xff0c;全国法拍房9000套&#xff1b;2018年&a…

HuatuoGPT模型介绍

文章目录 HuatuoGPT 模型介绍LLM4Med&#xff08;医疗大模型&#xff09;的作用ChatGPT 存在的问题HuatuoGPT的特点ChatGPT 与真实医生的区别解决方案用于SFT阶段的混合数据基于AI反馈的RL 评估单轮问答多轮问答人工评估 HuatuoGPT 模型介绍 HuatuoGPT&#xff08;华佗GPT&…