CountDownLatch示例

要點

CountDownLatch:一種同步輔助工具,允許一個或多個線程等待,直到在其他線程中執(zhí)行的一組操作完成;

理解

image.png

示例

package com.zoterap.javabasic.current;

import lombok.AllArgsConstructor;

import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

import static java.lang.String.format;

public class CountDownLatchDemo {

    private static final int num = 3;
    private static CountDownLatch countDownLatch = new CountDownLatch(num + 1);
    private static Random random = new Random();

    /**
     * 運動員線程
     */
    @AllArgsConstructor
    static class SportsManThread extends Thread {

        private String name;

        @Override
        public void run() {
            int warmUpTime = random.nextInt(3) + 1;
            try {
                TimeUnit.SECONDS.sleep(warmUpTime);
                System.out.println(format("[%s]熱身[%d]秒", name, warmUpTime));

                /**
                 * 減少閂鎖的數(shù)量
                 */
                countDownLatch.countDown();
                System.out.println(format("[%s]熱身完成,已就位", name));

                /**
                 * 線程等待树瞭,直到閂鎖的數(shù)量為0
                 */
                countDownLatch.await();
                
                System.out.println(format("[%d][%s]開跑......", System.currentTimeMillis(), name));
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    public static void main(String[] args) {
        for (int i = 1; i < num + 1; i++) {
            new SportsManThread(i + "號運動員").start();
        }

        try {
            countDownLatch.countDown();
            countDownLatch.await();
            System.out.println("所有運用員都已經(jīng)準備好");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

執(zhí)行結果

[2號運動員]熱身[1]秒
[2號運動員]熱身完成,已就位
[1號運動員]熱身[2]秒
[3號運動員]熱身[2]秒
[1號運動員]熱身完成爱谁,已就位
[3號運動員]熱身完成晒喷,已就位
所有運用員都已經(jīng)準備好
[1550024832810][1號運動員]開跑......
[1550024832810][3號運動員]開跑......
[1550024832810][2號運動員]開跑......
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市访敌,隨后出現(xiàn)的幾起案子凉敲,更是在濱河造成了極大的恐慌,老刑警劉巖捐顷,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荡陷,死亡現(xiàn)場離奇詭異,居然都是意外死亡迅涮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門徽龟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叮姑,“玉大人,你說我怎么就攤上這事〈福” “怎么了耘沼?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朱盐。 經(jīng)常有香客問我群嗤,道長,這世上最難降的妖魔是什么兵琳? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任狂秘,我火速辦了婚禮,結果婚禮上躯肌,老公的妹妹穿的比我還像新娘者春。我一直安慰自己,他們只是感情好清女,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布钱烟。 她就那樣靜靜地躺著,像睡著了一般嫡丙。 火紅的嫁衣襯著肌膚如雪拴袭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天曙博,我揣著相機與錄音稻扬,去河邊找鬼。 笑死羊瘩,一個胖子當著我的面吹牛泰佳,可吹牛的內容都是我干的。 我是一名探鬼主播尘吗,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼逝她,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睬捶?” 一聲冷哼從身側響起黔宛,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎擒贸,沒想到半個月后臀晃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡介劫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年徽惋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片座韵。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡险绘,死狀恐怖踢京,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情宦棺,我是刑警寧澤印机,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布司草,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏初嘹。R本人自食惡果不足惜凡恍,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一吞歼、第九天 我趴在偏房一處隱蔽的房頂上張望走越。 院中可真熱鬧,春花似錦贩耐、人聲如沸弧腥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽管搪。三九已至,卻和暖如春铡买,著一層夾襖步出監(jiān)牢的瞬間更鲁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工奇钞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澡为,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓景埃,卻偏偏與公主長得像媒至,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谷徙,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • 此篇博客所有源碼均來自JDK 1.8 在上篇博客中介紹了Java四大并發(fā)工具之一的CyclicBarrier拒啰,今天...
    chenssy閱讀 2,913評論 2 27
  • categories: Interviewdescription: 本文收集了一些經(jīng)典的Java面試題 1、面向對...
    我是阿喵醬閱讀 87,809評論 0 86
  • JUC 原創(chuàng)者:文思完慧,感謝尚硅谷谋旦,資料來源于尚硅谷 目錄: 1、volatile關鍵字與內存可見性 2屈尼、原子變量與...
    文思li閱讀 2,278評論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,089評論 1 32
  • 今天微信步數(shù)比你多哦 也許你也不會關注 哈哈哈 今天學校里新生報到超級超級熱鬧 和舍友去了東校 看男生 哈哈哈 可...
    閆麗彬閱讀 262評論 0 0