CountDownLatch 多线程执行同一任务
一、什么是 CountDownlatch
CountDownLatch
是一个同步工具类,它通过一个计数器来实现的,初始值为线程的数量。每当一个线程完成了自己的任务,计数器的值就相应得减1。当计数器到达0时,表示所有的线程都已执行完毕,然后在等待的线程就可以恢复执行任务
二、常用方法详解
CountDownLatch(int count)
:count
为计数器的初始值(一般需要多少个线程执行,count
就设置为几);countDown()
: 每调用一次计数器值 - 1,直到count
被减为 0,代表所有线程全部执行完毕;getCount()
:获取当前计数器的值;await()
: 等待计数器变为0,即等待所有异步线程执行完毕;boolean await(long timeout, TimeUnit unit)
: 此方法与await()
区别:- 此方法至多会等待指定的时间,超时后会自动唤醒,若 timeout 小于等于零,则不会等待;
- boolean 类型返回值:若指定的等待时间内计数器变为零了,则返回 true;若指定的等待时间过去了,则返回 false。
三、CountDownLatch 应用场景
- 某个线程需要在其他n个线程执行完毕后再向下执行
- 多个线程并行执行同一个任务,提高响应速度
以下为一个多线程并行处理数据后汇总的示例:
1 |
|
CountDownLatch 多线程执行同一任务
http://dunkingcurry30.github.io/2022/07/30/CountDownLatch多线程执行同一任务/