同步容器和工具類

同步容器和工具類

1:concurrentHashMap

concurrentHashMap采用的是鎖分段技術(shù)望拖。

HashTab容器在競(jìng)爭(zhēng)的并發(fā)環(huán)境下掏熬,效率低下的原因是:所有訪問HashTab的線程必須競(jìng)爭(zhēng)同一把鎖,加入容器里面有很多把鎖,那么每一把鎖都只鎖定其中一部分铐伴,當(dāng)多線程并發(fā)訪問的時(shí)候,線程間就不會(huì)存在鎖競(jìng)爭(zhēng)俏讹。

結(jié)構(gòu):Segment數(shù)組和HashEntry數(shù)組結(jié)構(gòu)組成当宴,Segment結(jié)構(gòu)其實(shí)和HashMap結(jié)構(gòu)效果一樣,是一種數(shù)組和鏈表的結(jié)構(gòu)泽疆,一個(gè)Segment數(shù)組里面包含了一個(gè)HashEntry數(shù)組户矢。鎖是鎖著Segment。

2:怎么減少線程的上下文切換

1:CAS算法殉疼,采用原子類

2:根據(jù)具體任務(wù)場(chǎng)景來創(chuàng)建比較合適的線程

3:無鎖并發(fā)編程逗嫡,多線程并發(fā)使用的時(shí)候,會(huì)引起上下文切換株依,所以多線程處理數(shù)據(jù)時(shí)驱证。可以采用一些方法來避免鎖恋腕。

3:阻塞隊(duì)列

BlockingQueue是所有的阻塞隊(duì)列的父接口抹锄。具體的實(shí)現(xiàn)例子有:

1:LinkedBlockingQueue:鏈表實(shí)現(xiàn)

2:ArrayedBlockingQueue:數(shù)組

3:SynchronousQueue:同步隊(duì)列:一個(gè)調(diào)用插入方法的線程必須等待另一個(gè)線程調(diào)用取出方法,隊(duì)列里面沒有容量荠藤。

4:PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列

5:DelayQueue 延遲隊(duì)列伙单。

4:同步工具

同步工具主要包括1:CountDownLatch(一次性柵欄)、2:Semaphore(信號(hào)量)哈肖、3:CyclicBarrier(循環(huán)同步柵欄)吻育、4:Exchanger(線程間交換器)和Phaser。

注意淤井,CountDownLatch是一次性的布疼,當(dāng)條件滿足后摊趾,它不能再回到初始狀態(tài),也不能阻止后續(xù)線程了游两。 如果需要可以使用CyclicBarrier砾层。 每當(dāng)調(diào)用await方法時(shí),內(nèi)部調(diào)用了tryAcquireShared方法贱案,由于state>0肛炮,因此調(diào)用的線程會(huì)阻塞在共享鎖的循環(huán)框架中。每當(dāng)調(diào)用countDown方法時(shí)宝踪,內(nèi)部調(diào)用了releaseShared方法侨糟,而此方法將會(huì)把state的值減1,當(dāng)state的值為0時(shí)瘩燥,tryAcquireShared中的循環(huán)將會(huì)喚醒所有等待線程粟害,使之繼續(xù)運(yùn)行。由于tryAcquireShared方法中沒有修改state值颤芬,因此CountDownLatch只能一次性使用,不能循環(huán)使用套鹅。

CyclicBarrier得到了一個(gè)parties數(shù)值站蝠,它代表參與的線程數(shù)量,以及一個(gè)Runnable的實(shí)例卓鹿,它代表被激發(fā)的事件菱魔。每當(dāng)有線程調(diào)用await時(shí),parties減1吟孙。若此時(shí)parties大于0澜倦,線程就在Condition處阻塞,若parties等于0杰妓,則此Condition會(huì)調(diào)用signalAll釋放所有等待線程藻治,并觸發(fā)事件,同時(shí)將parties復(fù)原巷挥。因此所有的線程又進(jìn)入下一輪循環(huán)桩卵。

Semaphore:在多個(gè)任務(wù)爭(zhēng)奪幾個(gè)有限的共享資源時(shí)使用。調(diào)用acquire方法獲取一個(gè)許可倍宾,成功獲取的線程繼續(xù)執(zhí)行雏节,否則就阻塞;調(diào)用release方法釋放一個(gè)許可高职。每當(dāng)有空余的許可時(shí)钩乍,阻塞的線程和其他線程可競(jìng)爭(zhēng)許可

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怔锌,隨后出現(xiàn)的幾起案子寥粹,更是在濱河造成了極大的恐慌变过,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件排作,死亡現(xiàn)場(chǎng)離奇詭異牵啦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妄痪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門哈雏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衫生,你說我怎么就攤上這事裳瘪。” “怎么了罪针?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵彭羹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我泪酱,道長(zhǎng)派殷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任墓阀,我火速辦了婚禮毡惜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘斯撮。我一直安慰自己经伙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布勿锅。 她就那樣靜靜地躺著帕膜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溢十。 梳的紋絲不亂的頭發(fā)上垮刹,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音张弛,去河邊找鬼危纫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乌庶,可吹牛的內(nèi)容都是我干的种蝶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞒大,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼螃征!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起透敌,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤盯滚,失蹤者是張志新(化名)和其女友劉穎踢械,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魄藕,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡内列,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了背率。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片话瞧。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寝姿,靈堂內(nèi)的尸體忽然破棺而出交排,到底是詐尸還是另有隱情,我是刑警寧澤饵筑,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布埃篓,位于F島的核電站,受9級(jí)特大地震影響根资,放射性物質(zhì)發(fā)生泄漏架专。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一玄帕、第九天 我趴在偏房一處隱蔽的房頂上張望部脚。 院中可真熱鬧,春花似錦桨仿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至骂铁,卻和暖如春吹零,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拉庵。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工灿椅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钞支。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓茫蛹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親烁挟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子婴洼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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