1、定义多线程
原文连接:http://www.studyshare.cn/blog-front//blog/details/1149/1并发
CountDownLatch是线程并发工具类,该类具备一个计数器,计数器具备一个初始化的值,当主线程调用latch.await()方法则进行阻塞,调用latch.countDown()方法时计数器值减一,一直等到计数器的值减为0的时候,原来阻塞的方法继续往下执行。代码以下:高并发
一、定义两个线程,线程一调用一次countDown(),线程二调用两次countDown()工具
二、主线程代码以下测试
三、运行结果线程
2、使用场景blog
一、使用CountDownLatch编写高并发测试程序,可使用CountDownLatch初始化100或者更多线程,当全部线程初始化完毕后一块儿去调用须要测试的业务模块代码,以此来模拟实际场景的高并发访问,测试业务代码对高并发的支持极限。队列
二、某些系统启动以前须要作不少初始化工做,只有当初始化工做线程中的全部代码执行完毕后,才继续执行主线程代码,此时使用CountDownLatch来实现。get
3、实现原理同步
CountDownLatch是基于AQS(AbstractQueuedSynchronizer (抽象队列同步器))实现的,关于AQS在另一篇文章有详细讲解,包括对源码进行了深刻分析,请参考:http://www.studyshare.cn/blog-front//blog/details/1131/1
原创文章,转载请注明来源,更多深度技术好文:http://www.studyshare.cn/blog-front//blog/index