相信每個想深入了解多執行緒開發的Java開發者都會遇到CountDownLatch和CyclicBarrier,大家也在網上看到各種介紹原理,代碼的,以及他們區別(應付面試)的,但是很少能講清楚:他們到底有啥作用,怎么用,應用那些場景?為什么面試總會遇到?
本文結合場景為大家加深理解,
官方解釋:

翻譯:
CountDownLatch是一個同步的輔助類,允許一個或多個執行緒,等待其他一組執行緒完成操作,再繼續執行,
CyclicBarrier是一個同步的輔助類,允許一組執行緒相互之間等待,達到一個共同點,再繼續執行,
他們都是:Synchronization aid,我把它翻譯成同步輔助器,既然是輔助工具,怎么使用啊?哪些場景使用啊?
個人理解:CountDownLatch:我把他理解成倒計時鎖
場景還原: 一年級期末考試要開始了,監考老師發下去試卷,然后坐在講臺旁邊玩著手機等待著學生答題,有的學生提前交了試卷,并約起打球了,等到最后一個學生交卷了,老師開始整理試卷,貼封條,下班,陪老婆孩子去了,
補充場景: 我們在玩LOL英雄聯盟時會出現十個人不同加載狀態,但是最后一個人由于各種原因始終加載不了100%,于是游戲系統自動等待所有玩家的狀態都準備好,才展現游戲畫面,
抽象圖:

每位乘客(執行緒)上車后,可用座位減1,直到為0,老司機就開始發車了,
個人理解:CyclicBarrier:可看成是個障礙,所有的執行緒必須到齊后才能一起通過這個障礙
場景還原: 以前公司組織戶外拓展活動,幫助團隊建設,其中最重要一個專案就是全體員工(包括女同事,BOSS)在完成其他專案時,到達一個高達四米的高墻沒有任何抓點,要求所有人,一個不能少的越過高墻,才能繼續進行其他專案,
抽象圖:

解放軍完美配合,一個都不能少,繼續完成任務,
我這里只是為了促進大家更好的理解它們的應用場景,詳細用法可以自行搜索,
原文鏈接:https://blog.csdn.net/zzg1229059735/article/details/61191679
著作權宣告:本文為CSDN博主「pony-zi」的原創文章,遵循CC 4.0 BY-SA著作權協議,轉載請附上原文出處鏈接及本宣告,
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2021最新版)
2.別在再滿屏的 if/ else 了,試試策略模式,真香!!
3.臥槽!Java 中的 xx ≠ null 是什么新語法?
4.Spring Boot 2.5 重磅發布,黑暗模式太炸了!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/340314.html
標籤:Java
