并發(fā)編程 - CoundDownLatch

CoundDownLatch 倒計(jì)數(shù)器

CoundDownLatch 多線程執(zhí)行贰军,比如控制讓其余5個(gè)線程執(zhí)行完畢
再繼續(xù)執(zhí)行自身剩余業(yè)務(wù)。

import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 模塊:【倒計(jì)數(shù)器】
 * <p>
 * 開發(fā): Bruce.Liu By 2018/8/23 下午9:19 Create
 */
public class CountDownLatchDemo implements Runnable {

    static final CountDownLatch end = new CountDownLatch(10);
    static final CountDownLatchDemo demo = new CountDownLatchDemo();

    @Override
    public void run() {
        try {
            Integer rdm = new Random().nextInt(10)*1000;
            //System.err.println(Thread.currentThread().getName()+" 暫停時(shí)間:"+rdm);
            Thread.sleep(rdm);//隨機(jī)暫停
            System.err.println(Thread.currentThread().getName()+" 線程已經(jīng)執(zhí)行完畢 ");
            end.countDown();//標(biāo)示當(dāng)前線程已經(jīng)執(zhí)行完畢
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws InterruptedException {
        ExecutorService ex = Executors.newFixedThreadPool(10);
        for(int i = 0 ; i < 10 ; i ++){
            ex.submit(demo);
        }
        System.err.println("Main異步開始進(jìn)入等待");
        end.await();//等待
        System.err.println("CountDownLatch 已全部執(zhí)行完畢 !");
        ex.shutdown();
        System.err.println("測(cè)試線程池執(zhí)行完畢 !");
    }

}

執(zhí)行結(jié)果 例:

Main異步開始進(jìn)入等待
pool-1-thread-10 線程已經(jīng)執(zhí)行完畢
pool-1-thread-7 線程已經(jīng)執(zhí)行完畢
pool-1-thread-5 線程已經(jīng)執(zhí)行完畢
pool-1-thread-9 線程已經(jīng)執(zhí)行完畢
pool-1-thread-8 線程已經(jīng)執(zhí)行完畢
pool-1-thread-1 線程已經(jīng)執(zhí)行完畢
pool-1-thread-4 線程已經(jīng)執(zhí)行完畢
pool-1-thread-3 線程已經(jīng)執(zhí)行完畢
pool-1-thread-2 線程已經(jīng)執(zhí)行完畢
pool-1-thread-6 線程已經(jīng)執(zhí)行完畢
CountDownLatch 已全部執(zhí)行完畢 !
測(cè)試線程池執(zhí)行完畢 !

代碼解讀

A. main函數(shù)創(chuàng)建了一個(gè)線程池為10的對(duì)象库倘,
循環(huán)執(zhí)行10次CountDownLatchDemo demo對(duì)象
B. main執(zhí)行end.await();main主線程被臨時(shí)掛起惫叛,等待10個(gè)線程執(zhí)行完畢颖御。
C. 線程執(zhí)行end.countDown();標(biāo)示當(dāng)前線程已經(jīng)執(zhí)行完畢
D. 當(dāng)全部線程執(zhí)行完畢后拢蛋,main繼續(xù)執(zhí)行剩余的業(yè)務(wù)代碼

參考:《實(shí)戰(zhàn) Java 高并發(fā)程序設(shè)計(jì)》這本書侦镇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曲伊,一起剝皮案震驚了整個(gè)濱河市燃观,隨后出現(xiàn)的幾起案子褒脯,更是在濱河造成了極大的恐慌,老刑警劉巖缆毁,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件番川,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)颁督,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門践啄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沉御,你說我怎么就攤上這事屿讽。” “怎么了吠裆?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵伐谈,是天一觀的道長。 經(jīng)常有香客問我试疙,道長衩婚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任效斑,我火速辦了婚禮非春,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缓屠。我一直安慰自己奇昙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布敌完。 她就那樣靜靜地躺著储耐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滨溉。 梳的紋絲不亂的頭發(fā)上什湘,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音晦攒,去河邊找鬼闽撤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛脯颜,可吹牛的內(nèi)容都是我干的哟旗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼栋操,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼闸餐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矾芙,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舍沙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后剔宪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拂铡,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戈锻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了和媳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片格遭。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖留瞳,靈堂內(nèi)的尸體忽然破棺而出拒迅,到底是詐尸還是另有隱情,我是刑警寧澤她倘,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布璧微,位于F島的核電站,受9級(jí)特大地震影響硬梁,放射性物質(zhì)發(fā)生泄漏前硫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一荧止、第九天 我趴在偏房一處隱蔽的房頂上張望屹电。 院中可真熱鬧,春花似錦跃巡、人聲如沸危号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽外莲。三九已至,卻和暖如春兔朦,著一層夾襖步出監(jiān)牢的瞬間偷线,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工沽甥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留声邦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓安接,卻偏偏與公主長得像翔忽,于是被迫代替她去往敵國和親英融。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盏檐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • JUC 原創(chuàng)者:文思,感謝尚硅谷驶悟,資料來源于尚硅谷 目錄: 1胡野、volatile關(guān)鍵字與內(nèi)存可見性 2、原子變量與...
    文思li閱讀 2,316評(píng)論 0 1
  • 必備的理論基礎(chǔ) 1.操作系統(tǒng)作用: 隱藏丑陋復(fù)雜的硬件接口痕鳍,提供良好的抽象接口硫豆。 管理調(diào)度進(jìn)程龙巨,并將多個(gè)進(jìn)程對(duì)硬件...
    drfung閱讀 3,541評(píng)論 0 5
  • 一、wait--notify--sleep Object obj = new Object(); obj.wait...
    fe0180bd6eaf閱讀 337評(píng)論 0 1
  • 轉(zhuǎn)自:https://blog.csdn.net/wanghao_0206/article/details/764...
    々志尚閱讀 677評(píng)論 0 2
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進(jìn)程 之前我們已經(jīng)了解了操作系統(tǒng)中進(jìn)程的概念,程序并不能單獨(dú)運(yùn)行汗茄,只有...
    go以恒閱讀 1,645評(píng)論 0 6