Java并发工具包——CountDownLatch

2017-10-28  本文已影响0人  icyage

Java并发工具包——CountDownLatch

感兴趣的朋友希望能留言交流,有好的建议可以提出来,大家一起进步多谢。

这期内容是之前的Zookeeper入门中挖的一个坑,为什么在实现Java连接Zookeeper服务的时候,使用了这个工具类。具体的原因是什么呢?这期文章来详细的解释一下这个类。

简介

CountDownLatch是java在并发场景中一个常用的类,这个类在java1.5版本发布的,为了实现若干线程等待其他线程执行结束之后继续执行。在Java面试中也是比较常考的一个知识点。

应用场景

使用例子

进度条

ProcessBar

成绩核算

Competition

实现原理

CountDownLatch是使用一个计数器来实现的,计数器的初始值为线程数量。每当一个线程完成了自己的任务后,计数器的值就会减一直到为零时,await的线程才会继续执行。


CountDownLatch

主线程通过await方法阻塞自己,之后其他各个线程的执行完毕后会通知主线程继续执行。
CountDownLatch内部通过一个静态的同步类完成计数功能,这个数字只能通过构造函数在最初创建对象的时候传入,没有其他办法通过外界方法调用进行修改,只能由各个线程中调用countDown方法来实现数量的减一,这样就能保证所有的线程都成功执行之后,主线程才可以继续执行。

常见面试的问题

上一篇 下一篇

猜你喜欢

热点阅读