![Java并发编程:核心方法与框架](https://wfqqreader-1252317822.image.myqcloud.com/cover/235/822235/b_822235.jpg)
上QQ阅读APP看书,第一时间看更新
![](https://epubservercos.yuewen.com/D3D8F4/4410924203007901/epubprivate/OEBPS/Images/icon1.png?sign=1738856794-ytMJ6ngtzTdJokuuPWcJuD21TPSU5thA-0-bd887a71f4899915a828ae847483289c)
2.1 CountDownLatch的使用
单词Latch的发音为[læt∫],中文翻译是门闩,也就是有“门锁”的功能,所以当门没有打开时,N个人是不能进入屋内的,也就是N个线程是不能继续向下运行的,支持这样的特性可以控制线程执行任务的时机,使线程以“组团”的方式一起执行任务。
类CountDownLatch所提供的功能是判断count计数不为0时则当前线程呈wait状态,也就是在屏障处等待,该类的全部方法列表如图2-1所示。
![](https://epubservercos.yuewen.com/D3D8F4/4410924203007901/epubprivate/OEBPS/Images/figure_0049_0001.jpg?sign=1738856794-2roQjUr9Zh6VPdlAAXnLHIuST5aE5Abk-0-46d0aeccb0602db3c76897718d3d7331)
图2-1 类Count Down Latch的全部方法列表
类CountDownLatch也是一个同步功能的辅助类,使用效果是给定一个计数,当使用这个CountDownLatch类的线程判断计数不为0时,则呈wait状态,如果为0时则继续运行。
实现等待与继续运行的效果分别需要使用await()和countDown()方法来进行。调用await()方法时判断计数是否为0,如果不为0则呈等待状态。其他线程可以调用count-Down()方法将计数减1,当计数减到为0时,呈等待的线程继续运行。而方法getCount()就是获得当前的计数个数。
要说明的是,计数无法被重置,如果需要重置计数,请考虑使用CyclicBarrier类。
类CountDownLatch的计数是减法操作。