第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

面試官追問:CyclicBarrier 和 CountDownLatch 有啥區(qū)別?

標(biāo)簽:
Java JavaScript

原文来自于:https://zha-ge.cn/java/74

面试官追问:CyclicBarrier 和 CountDownLatch 有啥区别?

还记得那年秋天的面试,阳光明媚,我自信满满地蹦进了会议室。结果刚坐下,面试官抬头问我:“你说说,CyclicBarrier 和 CountDownLatch 有啥区别?”

我心里咯噔一下:果然是老江湖,开局一手多线程!本以为这玩意儿就“等待一下大家”,硬着头皮张口就来,差点当场翻车……

江湖传说的二人组

这俩货,刚听名字就像一对技能点满的队友。先看下基本用途:

  • CountDownLatch:计数器,一顿 countDown,等计数变零释放等待线程。比如比赛枪响,所有参赛者一起冲。
  • CyclicBarrier:栅栏,大家都得等到位了才能一起通过,可以反复用,像团建集体爬山集合点,没人能早溜。

我当年第一次用这俩,心想都能“让一堆线程一起行动”,那区别是不是只是名字长短?

那年亲自上阵

实际干起来,才发现门道可真不少。比如下面这个小片段:

CyclicBarrier barrier = new CyclicBarrier(3, () -> System.out.println("都到了,出发!"));
for (int i = 0; i < 3; i++) {
    new Thread(() -> {
        // ...
        barrier.await();
    }).start();
}

CountDownLatch 的味道则是这样的:

CountDownLatch latch = new CountDownLatch(3);
for (int i = 0; i < 3; i++) {
    new Thread(() -> {
        // ...
        latch.countDown();
    }).start();
}
latch.await();

在键盘噼里啪啦的时候,我已经开始意识到:

  • 一个像集体闯关(栅栏),到点一起搞。
  • 一个像任务集结号,你先走没事,等老大哥叫停才算真正结束。

踩坑瞬间

有一回我图简单,直接把 CyclicBarrier 当 CountDownLatch 用,把主线程也拉到 barrier 里,结果卡得死死的。原来 barrier 是等所有人到岗才“炸开栅栏”,不按人数指定好——直接原地殉情。线程数错了?准备陪 barrier 玩“谁也别走”小游戏吧。

而 CountDownLatch 用多了还发现,latch 是一次性的,等完就作废。想多等几波?不好意思,reset 不支持。那会我项目有多个批次要用 latch,只能搞好几个实例,啃着代码泪两行。

经验启示

费劲巴拉踩了几次坑,才总结出点门道:

特性 CyclicBarrier CountDownLatch
可重用 是(cyclic !!)
谁等谁 所有调用 await 的线程 只有主线程 await
一次到齐后? 可 reset 再用 直接作废
应用场景 多线程阶段同步 一次性关卡解锁
支持回调 有(barrierAction) 没有

简单一句话:

  • CyclicBarrier:大家都到位一起嗨,再来一次都成。
  • CountDownLatch:等兄弟们都搞完我再收工,用一次就拉倒。

最后的唠嗑

如果下一次你也面对 “CyclicBarrier 和 CountDownLatch 有啥区别”这神仙提问,绝对别只说“都是线程同步工具”那种教科书八股。
讲一下谁等谁、谁能反复用、啥时候出发,甭管技术面还是“故事面”,肯定能留个好印象。

至于我?终于从 barrier 坑爬出来,开始觉得并发面试算啥,人生不过就是过关斩将、错个 barrier,大不了 reset 下自己继续冲呗!

– 程序员也得收个尾巴,写完这篇,泡杯咖啡继续下一个线程!

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消