首页 > 编程语言 > 详细

线程并发工具类之CountDownLatch的使用及原理分析

时间:2019-05-04 17:47:02      阅读:172      评论:0      收藏:0      [点我收藏+]

一、定义

原文链接:http://www.studyshare.cn/blog-front//blog/details/1149

CountDownLatch是线程并发工具类,该类具有一个计数器,计数器具有一个初始化的值,当主线程调用latch.await()方法则进行阻塞,调用latch.countDown()方法时计数器值减一,一直等到计数器的值减为0的时候,原来阻塞的方法继续往下执行。代码如下:

1、定义两个线程,线程一调用一次countDown(),线程二调用两次countDown()

技术分享图片

2、主线程代码如下

技术分享图片

3、运行结果

技术分享图片

二、使用场景

1、使用CountDownLatch编写高并发测试程序,可以使用CountDownLatch初始化100或者更多线程,当所有线程初始化完毕后一起去调用需要测试的业务模块代码,以此来模拟实际场景的高并发访问,测试业务代码对高并发的支持极限。

2、某些系统启动之前需要做很多初始化工作,只有当初始化工作线程中的所有代码执行完毕后,才继续执行主线程代码,此时使用CountDownLatch来实现。

三、实现原理

CountDownLatch是基于AQS(AbstractQueuedSynchronizer (抽象队列同步器))实现的,关于AQS在另外一篇文章有详细讲解,包括对源码进行了深入分析,请参考:http://www.studyshare.cn/blog-front//blog/details/1131

原创文章,转载请注明来源,更多深度技术好文:http://www.studyshare.cn/blog-front//blog/index

线程并发工具类之CountDownLatch的使用及原理分析

原文:https://www.cnblogs.com/darendu/p/10809059.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!