原文网址:Java多线程--CountDownLatch的用法(有实例)_IT利刃出鞘的博客-CSDN博客
简介
说明
本文用示例介绍CountDownLatch的用法。
CountDownLatch也属于JUC。线程可以使用await()进行等待,多线程进行递减计数,等到计数到0的时候等待即不再阻塞,从而向下执行。
在日常开发中经常会遇到需要在主线程中开启多个线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总的场景。
概述
在CountDownLatch出现之前一般都使用线程的join()方法来实现这一点,但是join方法不够灵活,两者的对比如下:
项 | CountDonLatch | join() |
是否适用于线程池 | 适用。 | 不适用。 使用线程池一般是直接添加Runable到线程池,这时没有办法再调用线程的join方法了。 |
调用时机 | 允许子线程运行完毕或者在运行中递减计数。 | 只能等待线程运行完毕。 |
方法
方法名 | 解释 |
---|---|
void countDown() | 计数器减1 |
long getCount() | 返回当前计数值 |
void await() | 当前线程阻塞,直到该计数器为0后才能继续执行 |
boolean await(long timeout, TimeUnit unit) | 与上述await()类似,只不过可以设置等待时间,如果在规定时间内计数器的值依然大于0,则继续执行 |
实例
简介
描述:创建两个线程,主流程里等待这两个线程都结束,才往下进行。
上边是文章的部分内容,为便于维护,全文已转移到此网址:Java多线程-CountDownLatch的用法(有实例) - 自学精灵