latch翻译成中文_LATCH是啥意思

首页 > 汽车 > 汽车资讯 > 正文

latch翻译成中文_LATCH是啥意思

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()方法

备案号:赣ICP备2022005379号
华网(http://www.hbsztv.com) 版权所有未经同意不得复制或镜像

QQ:51985809邮箱:51985809@qq.com