李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
countDownLatch简介
Leefs
2020-02-27 PM
1819℃
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
47
NLP
4
标签云
链表
Golang
JavaWEB项目搭建
Eclipse
容器深入研究
Java工具类
Java
gorm
递归
数据结构和算法
算法
Ubuntu
队列
Python
人工智能
ajax
CentOS
字符串
RSA加解密
国产数据库改造
数学
BurpSuite
Netty
SpringCloudAlibaba
线程池
Golang基础
Thymeleaf
排序
JavaScript
设计模式
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭