如何巧妙结合CountDownLatch与线程池实现高效并发控制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1469个文字,预计阅读时间需要6分钟。
在华为云TaurusDB竞赛中,参考阿里PolarDB大赛的佼佼者代码,发现都使用了CountDownLatch类。尽管之前看过相关代码,但并未清晰理解其作用。
1.CountDownLatch
现在做的这个华为云TaurusDB比赛中,参考的之前参加过阿里的PolarDB大赛的两个大佬的代码,发现都有用到CountDownLatch这个类,之前看代码的时候也看过,但是没有搞得很明白,自己写也写不出来,在此自己先学习一下。
字面理解:CountDownLatch:数量减少的门栓。
创建这样一个门栓
CountDownLatch countDownLatch = new CountDownLatch(count);
参数:count,门栓的计数次数。
在所有线程执行完成之前,调用countDownLatch.await()阻塞主线程。
每当一个线程执行完一个指定动作之后,count就会减少1,当count等于0时,主线程不再阻塞,开始继续执行下面的代码,当count大于0时,主线程一直阻塞,等待count变为0。每个线程动作执行结束后,执行countDownLatch.countDown(),这个门栓的count减一。
本文共计1469个文字,预计阅读时间需要6分钟。
在华为云TaurusDB竞赛中,参考阿里PolarDB大赛的佼佼者代码,发现都使用了CountDownLatch类。尽管之前看过相关代码,但并未清晰理解其作用。
1.CountDownLatch
现在做的这个华为云TaurusDB比赛中,参考的之前参加过阿里的PolarDB大赛的两个大佬的代码,发现都有用到CountDownLatch这个类,之前看代码的时候也看过,但是没有搞得很明白,自己写也写不出来,在此自己先学习一下。
字面理解:CountDownLatch:数量减少的门栓。
创建这样一个门栓
CountDownLatch countDownLatch = new CountDownLatch(count);
参数:count,门栓的计数次数。
在所有线程执行完成之前,调用countDownLatch.await()阻塞主线程。
每当一个线程执行完一个指定动作之后,count就会减少1,当count等于0时,主线程不再阻塞,开始继续执行下面的代码,当count大于0时,主线程一直阻塞,等待count变为0。每个线程动作执行结束后,执行countDownLatch.countDown(),这个门栓的count减一。

