Java中CountDownLatch怎么用
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,小编给大家分享一下Java中CountDownLatch怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!简述用来干嘛的?当你在方法中调用了多个线程,对数据库进行了一些不为人知的操
千家信息网最后更新 2025年12月01日Java中CountDownLatch怎么用图解
小编给大家分享一下Java中CountDownLatch怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
简述
用来干嘛的?当你在方法中调用了多个线程,对数据库进行了一些不为人知的操作后,还有一个操作需要留到前者都执行完的重头戏,就需要用到 CountDownLatch 了
实践代码
package com.github.gleans;
import java.util.concurrent.CountDownLatch;
public class TestCountDownLatch {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(3);
new KeyPass(1000L, "thin jack", latch).start();
new KeyPass(2000L, "noral jack", latch).start();
new KeyPass(3000L, "fat jack", latch).start();
latch.await();
System.out.println("此处对数据库进行最后的插入操作~");
}
static class KeyPass extends Thread {
private long times;
private CountDownLatch countDownLatch;
public KeyPass(long times, String name, CountDownLatch countDownLatch) {
super(name);
this.times = times;
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
try {
System.out.println("操作人:" + Thread.currentThread().getName()
+ "对数据库进行插入,持续时间:" + this.times / 1000 + "秒");
Thread.sleep(times);
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
图解
使用await()提前结束操作
package com.github.gleans;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class TestCountDownLatch {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(3);
new KeyPass(2000L, "公司一", latch).start();
new KeyPass(3000L, "公司二", latch).start();
new KeyPass(5000L, "公司三", latch).start();
latch.await(2, TimeUnit.SECONDS);
System.out.println("~~~贾总PPT巡演~~~~");
System.out.println("~~~~融资完成,撒花~~~~");
}
static class KeyPass extends Thread {
private long times;
private CountDownLatch countDownLatch;
public KeyPass(long times, String name, CountDownLatch countDownLatch) {
super(name);
this.times = times;
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
try {
Thread.sleep(times);
System.out.println("负责人:" + Thread.currentThread().getName()
+ "开始工作,持续时间:" + this.times / 1000 + "秒");
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
假设公司一、公司二、公司三各需要2s、3s、5s来完成工作,贾总等不了,只能等2s,那么就设置await的超时时间
latch.await(2, TimeUnit.SECONDS);
执行结果
负责人:公司一开始工作,持续时间:2秒
~~~贾总PPT巡演~~~~
~~~~融资完成,撒花~~~~
负责人:公司二开始工作,持续时间:3秒
负责人:公司三开始工作,持续时间:5秒
方法描述
看完了这篇文章,相信你对"Java中CountDownLatch怎么用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
公司
时间
工作
负责人
数据
数据库
方法
篇文章
融资
不为人知
代码
多个
完了
更多
知识
线程
结果
行业
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
roblox服务器怎么断开连接
《护苗.网络安全课》简报
网络安全画画作业
为什么要提高网络安全意识
一个项目怎么连接数据库
跑悅樂上海网络技术有限公司
国家网络安全条令
超融合服务器几台
足球经理需要数据库验证
广东湛江网络安全形势
泸州鸣思网络技术有限公司报案
全栈网络安全专家百度云
机关单位网络安全整改方案
辽阳供热站自动化控制软件开发
相亲软件开发流程
上海构建智慧社区软件开发
php数据库是什么
电影订票软件开发
网络技术分享流
树莓派的数据库
sql数据表录入数据库
客户端服务器端属于什么
绝地求生国服服务器繁忙如何解决
赣州网络安全知识竞答
美团网络技术公司
云服务器怎么越来越火
计算机网络技术的专业认识
贵州电信服务器
知网如何找中文数据库
数据库 同步软件