CountDownLatch是一个非常实用的多线程控制工具类。“Count Down”在英文中意思为倒计数,Latch意思为门闩的意思。如果翻译成为倒计数门闩,我想大家都会不知所云吧!因此,这里简单地称之为倒计数器。在这里,门闩的含义是把门锁起来,不让里面的线程跑出来,因此,这个工具通常用来控制线程等待,它可以让某一个线程等待直到倒计数结束,再开始执行。
对于倒计数器,一种典型的场景就是火箭发射。在火箭发射前,为了保证万无一失,往往还要对各项设备、仪器进行检查。只有等所有检查都完成后,引擎才能点火,这种场景就非常适合使用CountDownLatch。它可以使点火线线程等待所有检查线程全部完工后再执行。
CountDownLatch的构造函数接收一个整数作为参数,即当前这个计数器的计数个数。
下面这个简单的示例,演示了CountDownLatch的使用方法。
上述代码第2行生成一个CountDownLatch实例,计数数量为10,这表示需要10个线程完成任务后等待在CountDownLatch上的线程才能继续执行。代码第10行使用了,也就是通知CountDownLatch,一个线程已经完成了任务,倒计数器减1。第21行使用方法,要求主线程等待所有检查任务全部完成,待10个任务全部完成后,主线程才能继续执行。
主线程CountDownLatch上等待,当所有检查任务全部完成后,主线程方能继续执行。
领取专属 10元无门槛券
私享最新 技术干货