李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
countDownLatch简介
Leefs
2020-02-27 PM
1253℃
0条
# countDownLatch简介 ### 前言 countDownLatch是在java1.5被引入,存在于java.util.cucurrent包下。 ### 一、概念 + **countDownLatch**:类使一个线程等待其他线程各自执行完毕后再执行。 + **countDownLatch**是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。 ### 二、源码 + 1.countDownLatch类中只提供了一个构造器: ```java //参数count为计数值 public CountDownLatch(int count) { }; ``` + 2.类中有三个方法是最重要的: ```java //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 public void await() throws InterruptedException { }; //和await()类似,只不过等待一定的时间后count值还没变为0的话就会继续执行 public boolean await(long timeout, TimeUnit unit) throws InterruptedException { }; //将count值减1 public void countDown() { }; ``` ### 三、代码示例 ```java public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(6); for(int i=1;i<=6;i++){ new Thread(()->{ System.out.println(Thread.currentThread().getName()+"\t 上完自习,离开教室"); countDownLatch.countDown(); },String.valueOf(i)).start(); } countDownLatch.await(); System.out.println(Thread.currentThread().getName()+"\t ********班长最后关门走人!"); } } ``` **运行结果** ```java 1 上完自习,离开教室 2 上完自习,离开教室 3 上完自习,离开教室 4 上完自习,离开教室 5 上完自习,离开教室 6 上完自习,离开教室 main ********班长最后关门走人! ``` *附:[参考文章链接](https://www.jianshu.com/p/e233bb37d2e6)*
标签:
并发编程
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/650.html
上一篇
Java锁--公平和非公平锁
下一篇
CyclicBarrier和Semaphore简介
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
43
标签云
Jenkins
Linux
排序
Docker
SQL练习题
GET和POST
Elastisearch
数据结构和算法
FileBeat
Netty
数学
Java
nginx
Kibana
Quartz
Golang基础
Java工具类
JavaScript
VUE
JavaSE
队列
ajax
Hbase
Tomcat
MySQL
工具
稀疏数组
Http
Git
Ubuntu
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞