栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 线程并发 常用辅助类 (一) CountDownLatch

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 线程并发 常用辅助类 (一) CountDownLatch

首先jdk 定义

CountDownLatch:

允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。

A CountDownLatch用给定的计数初始化。 await方法阻塞,直到由于countDown()方法的调用而导致当前计数达到零,之后所有等待线程被释放,并且任何后续的await 调用立即返回。 这是一个一次性的现象 - 计数无法重置。 如果您需要重置计数的版本,请考虑使用CyclicBarrier 。

A CountDownLatch是一种通用的同步工具,可用于多种用途。 一个CountDownLatch为一个计数的CountDownLatch用作一个简单的开/关锁存器,或者门:所有线程调用await在门口等待,直到被调用countDown()的线程打开。 一个CountDownLatch初始化N可以用来做一个线程等待,直到N个线程完成某项操作,或某些动作已经完成N次。

CountDownLatch一个有用的属性是,它不要求调用countDown线程等待计数到达零之前继续,它只是阻止任何线程通过await ,直到所有线程可以通过。

构造方法:

构造方法
Constructor and Description
CountDownLatch(int count)

构造一个以给定计数 CountDownLatch CountDownLatch。

所有方法接口方法具体的方法

Modifier and TypeMethod and Description
voidawait()

导致当前线程等到锁存器计数到零,除非线程是 interrupted 。

booleanawait(long timeout, TimeUnit unit)

使当前线程等待直到锁存器计数到零为止,除非线程为 interrupted或指定的等待时间过去。

voidcountDown()

减少锁存器的计数,如果计数达到零,释放所有等待的线程。

longgetCount()

返回当前计数。

StringtoString()

返回一个标识此锁存器的字符串及其状态。

最后上代码:

代码示范:

public class CountDownLatchDemo {

    public static void main(String[] args) throws InterruptedException {
        //初始化计数器
        CountDownLatch countDownLatch=new CountDownLatch(6);  

        new Thread(()->{
            for(int a=0;a<6;a++){
                System.out.println(a);
                countDownLatch.countDown();   //计数器减一
            }
        }).start();
        countDownLatch.await();  //计数器归零往下处理
        System.out.println("结束了");
    }

细节:

CountDownLatch.countDown() ----数量减一

countDownLatch.await(); -----当数量为零,被唤醒

下一个辅助类:CyclicBarrier

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号