面試官:CountDownLatch 與 CyclicBarrier 的使用場景?有什么區(qū)別?
點(diǎn)擊關(guān)注公眾號,Java干貨及時送達(dá)
相信每個想深入了解多線程開發(fā)的Java開發(fā)者都會遇到CountDownLatch和CyclicBarrier,大家也在網(wǎng)上看到各種介紹原理,代碼的,以及他們區(qū)別(應(yīng)付面試)的,但是很少能講清楚:他們到底有啥作用,怎么用,應(yīng)用那些場景?為什么面試總會遇到?
本文結(jié)合場景為大家加深理解。
官方解釋:

翻譯:
CountDownLatch是一個同步的輔助類,允許一個或多個線程,等待其他一組線程完成操作,再繼續(xù)執(zhí)行。
CyclicBarrier是一個同步的輔助類,允許一組線程相互之間等待,達(dá)到一個共同點(diǎn),再繼續(xù)執(zhí)行。
他們都是:Synchronization ?aid,我把它翻譯成同步輔助器,既然是輔助工具,怎么使用?。磕男﹫鼍笆褂冒。?/span>
個人理解:CountDownLatch:我把他理解成倒計時鎖
場景還原: 一年級期末考試要開始了,監(jiān)考老師發(fā)下去試卷,然后坐在講臺旁邊玩著手機(jī)等待著學(xué)生答題,有的學(xué)生提前交了試卷,并約起打球了,等到最后一個學(xué)生交卷了,老師開始整理試卷,貼封條,下班,陪老婆孩子去了。
補(bǔ)充場景: 我們在玩LOL英雄聯(lián)盟時會出現(xiàn)十個人不同加載狀態(tài),但是最后一個人由于各種原因始終加載不了100%,于是游戲系統(tǒng)自動等待所有玩家的狀態(tài)都準(zhǔn)備好,才展現(xiàn)游戲畫面。
抽象圖:

每位乘客(線程)上車后,可用座位減1,直到為0,老司機(jī)就開始發(fā)車了。另外,多線程系列面試題和答案全部整理好了,微信搜索Java技術(shù)棧,在后臺發(fā)送:面試,可以在線閱讀。
個人理解:CyclicBarrier:可看成是個障礙,所有的線程必須到齊后才能一起通過這個障礙
抽象圖:

解放軍完美配合,一個都不能少,繼續(xù)完成任務(wù)。
我這里只是為了促進(jìn)大家更好的理解它們的應(yīng)用場景,詳細(xì)用法可以自行搜索。另外,關(guān)注公眾號Java技術(shù)棧,在后臺回復(fù):面試,可以獲取我整理的 Java 多線程系列面試題和答案,非常齊全。
原文鏈接:https://blog.csdn.net/zzg1229059735/article/details/61191679
版權(quán)聲明:本文為CSDN博主「pony-zi」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。







關(guān)注Java技術(shù)棧看更多干貨


