很是有用的併發控制-倒計時器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、後端、架構、阿里巴巴等大廠最新面試題

以爲不錯,別忘了點贊+轉發哦!

相關文章
相關標籤/搜索