博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.util.concurrent系列之--CountDownLatch
阅读量:6829 次
发布时间:2019-06-26

本文共 1916 字,大约阅读时间需要 6 分钟。

hot3.png

一、CountDownLatch 用法 :

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务

A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。

二、CountDownLatch类 介绍:

输入图片说明

三、CountDownLatch 方法讲解:

然后下面这3个方法是CountDownLatch类中最重要的方法:

// 调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行public void await() throws InterruptedException { };   // 和await()类似,只不过等待一定的时间后count值还没变为0的话就会继续执行public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };  //将count值减1public void countDown() { };

四、下面看一个例子大家就清楚CountDownLatch的用法了:

public class Test {     public static void main(String[] args) {            final CountDownLatch latch = new CountDownLatch(2);          new Thread(){             public void run() {                 try {                     System.out.println("子线程"+Thread.currentThread().getName()+"正在执行");                    Thread.sleep(3000);                    System.out.println("子线程"+Thread.currentThread().getName()+"执行完毕");                    latch.countDown();                } catch (InterruptedException e) {                    e.printStackTrace();                }             };         }.start();          new Thread(){             public void run() {                 try {                     System.out.println("子线程"+Thread.currentThread().getName()+"正在执行");                     Thread.sleep(3000);                     System.out.println("子线程"+Thread.currentThread().getName()+"执行完毕");                     latch.countDown();                } catch (InterruptedException e) {                    e.printStackTrace();                }             };         }.start();          try {             System.out.println("等待2个子线程执行完毕...");            latch.await();            System.out.println("2个子线程已经执行完毕");            System.out.println("继续执行主线程");        } catch (InterruptedException e) {            e.printStackTrace();        }     }}

执行结果:

输入图片说明

五、参考文章:

转载于:https://my.oschina.net/u/3136594/blog/1593208

你可能感兴趣的文章
nodeJS监控任务完成并通知
查看>>
Hessian学习—Hessian入门
查看>>
QML学习笔记-介绍篇(1)
查看>>
gcc 的原子操作实现自旋锁
查看>>
Socket详解(记录一)
查看>>
Oracle 分析函数
查看>>
SpringBoot基础教程1.1.1 项目搭建
查看>>
Jenkins打包记录导至服务磁盘空间不够
查看>>
设计模式C++实现(2)——策略模式
查看>>
微信小程序五-列表渲染多层嵌套循环及wx:key的使用
查看>>
查看centos中的用户和用户组和设置用户权限
查看>>
JDK安装
查看>>
centos6.4 nginx php mysql 编译安装一些补充事项
查看>>
uliweb的chatroom聊天室测试程序
查看>>
layui中laydate动态赋值最大、最小值
查看>>
deepin15.7 更新升级之后,sogou 浏览器chrome,firfox 中无法使用中文输入
查看>>
Quartz集群原理及配置应用
查看>>
路由网关转发配置
查看>>
java读取配置文件的几种方法
查看>>
Hadoop上路_03-伪分布式集群配置
查看>>