2.1 CountDownLatch的使用

单词Latch的发音为[læt∫],中文翻译是门闩,也就是有“门锁”的功能,所以当门没有打开时,N个人是不能进入屋内的,也就是N个线程是不能继续向下运行的,支持这样的特性可以控制线程执行任务的时机,使线程以“组团”的方式一起执行任务。

类CountDownLatch所提供的功能是判断count计数不为0时则当前线程呈wait状态,也就是在屏障处等待,该类的全部方法列表如图2-1所示。

图2-1 类Count Down Latch的全部方法列表

类CountDownLatch也是一个同步功能的辅助类,使用效果是给定一个计数,当使用这个CountDownLatch类的线程判断计数不为0时,则呈wait状态,如果为0时则继续运行。

实现等待与继续运行的效果分别需要使用await()和countDown()方法来进行。调用await()方法时判断计数是否为0,如果不为0则呈等待状态。其他线程可以调用count-Down()方法将计数减1,当计数减到为0时,呈等待的线程继续运行。而方法getCount()就是获得当前的计数个数。

要说明的是,计数无法被重置,如果需要重置计数,请考虑使用CyclicBarrier类。

类CountDownLatch的计数是减法操作。