很是有用的并发控制-倒计时器CountDownLatch

CountDownLatch见名思义,即倒计时器,是多线程并发控制中很是有用的工具类,它能够控制线程等待,直到倒计时器归0再继续执行。java

给你出个题,控制5个线程执行完后主线徎再往下执行,并统计5个线程的所耗时间。固然咱们能够经过join的形式完成这道题,但若是我说统计100个1000个线程呢?难道要写1000个join等待吗?这显然是不现实的。面试

废话少说,咱们来作一个例子看看上面的题怎么实现,并理解倒计时器。后端

首先经过new CountDownLatch(5)约定了倒计时器的数量,在这里也是线程的数量,每一个线程执行完后再对倒计时器-1。countDown()方法便是对倒计时器-1,这个方法须要放在finally中,必定要保证在每一个线程中获得释放,否则子线程若是由于某种缘由报错倒计时器永远不会清0,则会导报主线程会一直等待。多线程

await()方法便是主线程阻塞等待倒计器归0后再继续往下执行,固然await能够带时间进去,等待多久时间后无论倒计时器有没有归0主线程继续往下执行。架构

如上面的例子所示,咱们输出了倒计时器最后的数字0,表示倒计时器归0了,也输出了从开始到结束所花费的时间。从这个例子能够彻底理解倒计时器的含义,这个工具类在实际开发常常有用到,也很好用。并发

推荐去个人博客阅读更多:工具

1.Java JVM、集合、多线程、新特性系列教程线程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程3d

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程blog

4.Java、后端、架构、阿里巴巴等大厂最新面试题

以为不错,别忘了点赞+转发哦!

相关文章
相关标签/搜索