并發(fā)工具類

------本文主要記錄CountDownLatch,CyclicBarries、Semaphore工具提供的并發(fā)流程控制手段

等待多線程完成的CountDownLatch

允許一個或多個線程等待其它線程完成操作,首先我會想到之前看過的fork/join框架 中的join 等待某線程執(zhí)行完再返回侦鹏,這個函數(shù)的實(shí)際功能是循環(huán)判斷線程是否存活如果不存活就 wait(0)永遠(yuǎn)的等待下去湾盒。然而jdk5之后對countdownlatch有優(yōu)化為了不讓主線程一直等待,就使用另外一個await(long time,TimeUtil util) 實(shí)則回一個特定時間就返回 而不管線程是否存活痰憎。

static CountDownLarch c = new CountDownLatch(n)
//每執(zhí)行一次countDown方法 n值減1 n為0之后 就從await()返回 
同步屏障 CyclicBarrier

讓一組線程到達(dá)一個屏障時被阻塞,直到最后一個線程到達(dá)屏障時攀涵,屏障才會開門铣耘,所以被屏障攔截的線程才會繼續(xù)運(yùn)行。

public class CyclicBarrierTest{
    static CyclicBarrier c = new CyclicBarrier(2);
    public static void main(String[] args){
        new Thread(new Runnable() {
            public void run(){
                try{
                    c.await(); 
                }catch(Exception e){
                }
                system.out.println(1);
            }
        }).start();  
        //調(diào)用await()意思是告知CyclicBarrier此線程已  
        //到達(dá)屏障以故,然后當(dāng)前線程被阻塞直所有線程都到了
        try{
            c.await();
        }catch(Exception e){
        }
        system.out.println(1);
    }
}

輸出可能是 12 也可能是21 因線程調(diào)度由cpu決定兩個線程都可能先執(zhí)行到同步屏障蜗细, 參數(shù)2表示屏障需要等待兩個線程到達(dá)才會開門。
Cyclicbarrier還可以有一個參數(shù)

CyclicBarrier(int parties,Runnable barrierAction);

表示線程到達(dá)屏障時優(yōu)先執(zhí)行barrierAction類的run方法怒详。

CyclicBarrier和CountDownLatch的區(qū)別

CountDownLatch的計(jì)數(shù)器只能有用一次炉媒,而CyclicBarrier計(jì)數(shù)器可以reset(),所以后者更實(shí)用業(yè)務(wù)更加復(fù)雜的場景棘利。

CyclicBarrier還有其他的方法 如getNumberWaiting用來獲取屏障阻塞的線程數(shù)量 isBroken用來了解阻塞的線程是否被中斷橱野,所謂線程阻塞就是被動的在搶占資源中得不到資源,被動的掛起在內(nèi)存善玫,等待某種信號源或信號量將他喚醒(只釋放CPU不釋放內(nèi)存水援。)

控制并發(fā)線程數(shù)的Semaphore

信號量密强,用來控制訪問特定資源的線程數(shù)量,協(xié)調(diào)線程以保證合理的使用公共資源蜗元,
應(yīng)用場景

  1. 流量控制
Semaphore s = new Semaphore(10)或渤;
//10表示允許10個線程并發(fā)執(zhí)行通過s.aquire()獲取 s.release歸還使用權(quán)。

線程間交換數(shù)據(jù)的Exchanger

用于進(jìn)行線程間的數(shù)據(jù)交換奕扣,它提供一個同步點(diǎn)薪鹦,到達(dá)這個同步點(diǎn)兩個線程就會交換彼此的數(shù)據(jù),只有兩個線程都執(zhí)行了exchange方法惯豆,都到達(dá)同步點(diǎn)時池磁,兩個線程就可以交換數(shù)據(jù)
這個工具可用于遺傳算法,校對工作楷兽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末地熄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芯杀,更是在濱河造成了極大的恐慌端考,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揭厚,死亡現(xiàn)場離奇詭異却特,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筛圆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門裂明,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顽染,你說我怎么就攤上這事漾岳『涿啵” “怎么了粉寞?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長左腔。 經(jīng)常有香客問我唧垦,道長,這世上最難降的妖魔是什么液样? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任振亮,我火速辦了婚禮,結(jié)果婚禮上鞭莽,老公的妹妹穿的比我還像新娘坊秸。我一直安慰自己,他們只是感情好澎怒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布褒搔。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪星瘾。 梳的紋絲不亂的頭發(fā)上走孽,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音琳状,去河邊找鬼磕瓷。 笑死,一個胖子當(dāng)著我的面吹牛念逞,可吹牛的內(nèi)容都是我干的困食。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼翎承,長吁一口氣:“原來是場噩夢啊……” “哼陷舅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起审洞,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤莱睁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芒澜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰剿,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年痴晦,在試婚紗的時候發(fā)現(xiàn)自己被綠了南吮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡誊酌,死狀恐怖部凑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碧浊,我是刑警寧澤涂邀,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站箱锐,受9級特大地震影響比勉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驹止,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一浩聋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臊恋,春花似錦衣洁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毙替。三九已至,卻和暖如春践樱,著一層夾襖步出監(jiān)牢的瞬間厂画,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工拷邢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袱院,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓瞭稼,卻偏偏與公主長得像忽洛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子环肘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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

  • 01 從老家回城欲虚,專門等到下午一兩點(diǎn)。這樣一上車悔雹,倆妞就可以睡覺复哆,我就可以安靜,并且輕松一路了腌零。 兩個多小時的車程...
    宛若辰曦閱讀 282評論 0 0
  • 本不想將一句簡單的話說的如此繞口梯找,但事實(shí)也許就是如此。 每一個在高考臨近時分益涧,思考未來從事何種專業(yè)的學(xué)生都像是一...
    快走踏清秋閱讀 211評論 0 0
  • 第三章 夢萌 “噗"玉瓏靈吐出一口鮮血锈锤,剛剛那一下,直沖擊了五臟六腑闲询。 “被我這一記尾火刃擊中不好受吧久免,我這技能連...
    海闊天空_02d7閱讀 204評論 0 3