• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java中多线程同步类 CountDownLatch

Java中多线程同步类 CountDownLatch

作者:行者无疆-ITer 字体:[增加 减小] 来源:互联网 时间:2017-05-28

行者无疆-ITer 通过本文主要向大家介绍了java countdownlatch,countdownlatch,countdownlatch.await,countdownlatch的用法,new countdownlatch 1等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在多线程开发中,常常遇到希望一组线程完成之后在执行之后的操作,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();
 }

}

}
</div>

测试类:

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();
 }
 }
}
</div>

输出结果:

 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
</div>

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java CountDownLatch完成异步回调实例详解
  • Java中CountDownLatch进行多线程同步详解及实例代码
  • Java中多线程同步类 CountDownLatch

相关文章

  • 2017-05-28Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析
  • 2017-05-28SpringBoot JPA 表关联查询实例
  • 2017-05-28Java本地缓存的实现代码
  • 2017-05-28Java 操作Properties配置文件详解
  • 2017-05-28Java内部类_动力节点Java学院整理
  • 2017-05-28Hibernate映射之基本类映射和对象关系映射详解
  • 2017-05-28Java微信公众平台开发(8) 多媒体消息回复
  • 2017-05-28Java String类详解_动力节点Java学院整理
  • 2017-05-28动力节点_王勇_DRP项目视频教程完整版292集
  • 2017-05-28spring-boot实现增加自定义filter(新)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Spring配置多个数据源并实现动态切换示例
    • java连接mysql数据库的方法
    • mybatis教程之查询缓存(一级缓存二级缓存和整合ehcache)
    • JavaEE开发之SpringMVC中的自定义消息转换器与文件上传
    • Spring MVC 基于URL的映射规则(注解版)
    • java中每月等额与先息后本计算
    • SpringBoot整合JPA的实例代码
    • spring boot和mybatis集成分页插件
    • SpringMVC结合ajaxfileupload实现文件无刷新上传代码
    • 详解Spring Boot 集成Shiro和CAS

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有