latch翻译成中文_LATCH是啥意思

一、简介
CountDownLatch是线程同步辅助类,使用这个辅助类可以让线程等待其他线程完成一组操作后才能执行,否则一直等待。
二、大致原理
构造器采取一个整数来初始化等待其他线程的数量,使用await()方法让线程开始等待其他线程执行完毕,每一个线程执行完成后需调用countDown()方法,这个方法会让计数器-1(AQS的state),当计数器为0的时候,CountDownLatch类将唤醒所有调用await()方法的线程。 其实就是初始化state=n,然后每次countDown都调用release方法进行-1。这些都是aqs的知识,早就讲过了。
三、Demo
1、需求
完成这样的一个需求,大家视频会议,一共10个人,都到齐了后就开始视频会议,没到齐的话领导(主线程)是不会讲话的。
2、源码
3、输出结果
4、结果分析
- 首先输出等待人数:10
- 然后进入await(),代表着进入WAITING状态,等待其他10个线程都完事后才会叫醒此线程
- 每次只需countDown都代表着线程执行完毕1次。
- ...
- 最后输出还有0人没到,这时候代表其他线程都执行完毕,会唤醒所有调用await()方法的线程
- 输出人都来全了,我们开始开会...
四、应用场景
1、比如对于马拉松比赛,进行排名计算,参赛者的排名,肯定是跑完比赛之后,进行计算得出的,翻译成Java识别的预发,就是N个线程执行操作,主线程等到N个子线程执行完毕之后,在继续往下执行。2、也可以作为系统资源的有效回收,比如N个线程在操作文件,操作完成后主线程进行文件整理等操作
五、源码解读
1、类架构
2、构造器
3、await()方法
4、countDown()方法
下一篇:最后一页
