全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java中多线程同步类 CountDownLatch

在多线程开发中,常常遇到希望一组线程完成之后在执行之后的操作,java提供了一个多线程同步辅助类,可以完成此类需求:

类中常见的方法:

其中构造方法:

CountDownLatch(int count) 参数count是计数器,一般用要执行线程的数量来赋值。

long getCount():获得当前计数器的值。

void countDown():当计数器的值大于零时,调用方法,计数器的数值减少1,当计数器等数零时,释放所有的线程。

void await():调所该方法阻塞当前主线程,直到计数器减少为零。

代码例子:

线程类:

import java.util.concurrent.CountDownLatch;
public class TestThread extends Thread{
CountDownLatch cd;
String threadName;
public TestThread(CountDownLatch cd,String threadName){
 this.cd=cd;
 this.threadName=threadName;

}
@Override
public void run() {
 System.out.println(threadName+" start working...");
 dowork();
 System.out.println(threadName+" end working and exit...");
 cd.countDown();//告诉同步类完成一个线程操作完成

}
private void dowork(){
 try {
 Thread.sleep(2000);
 System.out.println(threadName+" is working...");
 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

}

}

测试类:

import java.util.concurrent.CountDownLatch;
public class TsetCountDownLatch {

 public static void main(String[] args) {
 try {
  CountDownLatch cd = new CountDownLatch(3);// 表示一共有三个线程
  TestThread thread1 = new TestThread(cd, "thread1");
  TestThread thread2 = new TestThread(cd, "thread2");
  TestThread thread3 = new TestThread(cd, "thread3");
  thread1.start();
  thread2.start();
  thread3.start();
  cd.await();//等待所有线程完成
  System.out.println("All Thread finishd");
 } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
}

输出结果:

 thread1 start working...
 thread2 start working...
 thread3 start working...
 thread2 is working...
 thread2 end working and exit...
 thread1 is working...
 thread3 is working...
 thread3 end working and exit...
 thread1 end working and exit...
 All Thread finishd

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# countdownlatch  # java多线程CountDownLatch与线程池ThreadPoolExecutor/Execut  # Java countDownLatch如何实现多线程任务阻塞等待  # 如何使用CountDownLatch同步java多线程  # java使用CountDownLatch等待多线程全部执行完成  # JAVA多线程CountDownLatch使用详解  # Java中CountDownLatch进行多线程同步详解及实例代码  # 详解Java多线程编程中CountDownLatch阻塞线程的方法  # Java多线程编程之CountDownLatch同步工具使用实例  # Java多线程之同步工具类CountDownLatch  # 零时  # 多线程  # 此类  # 为零  # 类中  # pre  # class  # strong  # await  # import  # concurrent  # public  # TestThread  # brush  # extends  # util  # countDown  # text  # align  # center 


相关文章: 新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何快速打造个性化非模板自助建站?  如何在宝塔面板创建新站点?  专业网站建设制作报价,网页设计制作要考什么证?  贸易公司网站制作流程,出口贸易网站设计怎么做?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Python如何创建带属性的XML节点  javascript中对象的定义、使用以及对象和原型链操作小结  制作网站怎么制作,*游戏网站怎么搭建?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何正确下载安装西数主机建站助手?  Python多线程使用规范_线程安全解析【教程】  如何选择最佳自助建站系统?快速指南解析优劣  css网站制作参考文献有哪些,易聊怎么注册?  建站之星后台密码遗忘?如何快速找回?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何批量查询域名的建站时间记录?  详解jQuery停止动画——stop()方法的使用  建站之星安装后如何配置SEO及设计样式?  网站制作企业,网站的banner和导航栏是指什么?  建站VPS选购需注意哪些关键参数?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  公司网站制作价格怎么算,公司办个官网需要多少钱?  高端云建站费用究竟需要多少预算?  如何在IIS中配置站点IP、端口及主机头?  实例解析Array和String方法  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何通过宝塔面板实现本地网站访问?  建站之星多图banner生成与模板自定义指南  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站之星价格显示格式升级,你的预算足够吗?  如何在橙子建站中快速调整背景颜色?  制作网站公司那家好,网络公司是做什么的?  模具网站制作流程,如何找模具客户?  建站主机选购指南与交易推荐:核心配置解析  Python文件管理规范_工程实践说明【指导】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何快速搭建高效WAP手机网站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  ,想在网上投简历,哪几个网站比较好?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  h5网站制作工具有哪些,h5页面制作工具有哪些?  如何制作网站标识牌,动态网站如何制作(教程)?  Thinkphp 中 distinct 的用法解析  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  营销式网站制作方案,销售哪个网站招聘效果最好?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。