工具類

1爱谁、Phaser CountDownLatch CyclicBarrier Semaphore

  • CountDownLatch
public CountDownLatch(int count)   // 構(gòu)造器  倒計(jì)時(shí)的計(jì)數(shù)器
public void await() throws InterruptedException // 這兩個(gè)await方法會(huì)檢測現(xiàn)在count值是否為0慕趴,如果為0則直接返回罚勾,不為0刹帕,則會(huì)將當(dāng)前線程掛起,知道count為0喚醒線程煞赢,返回
public boolean await(long timeout, TimeUnit unit)  throws InterruptedException
public void countDown()  // 減1   實(shí)現(xiàn)是使用的compareAndSetWaitStatus CAS 負(fù)責(zé)喚醒a(bǔ)wait的線程

應(yīng)用:
等待多個(gè)任務(wù)執(zhí)行完成后,再執(zhí)行一個(gè)任務(wù)
如:以前的app上哄孤,多張圖片同時(shí)上傳照筑,全部上傳完成再后調(diào)用信息上傳接口

  • CyclicBarrier
public CyclicBarrier(int parties)  // 構(gòu)造器  需要等待多少個(gè)線程到達(dá)   cyclic的含義是可復(fù)用
public CyclicBarrier(int parties, Runnable barrierAction)
public int await()  // 等待parties個(gè)線程走到這里,然后再一起放行往后
public int await(long timeout, TimeUnit unit)

應(yīng)用:
使用上面那個(gè)barrierAction可以達(dá)到countdown的目的瘦陈。凝危。
如一輛客車必須裝滿才能讓乘客上車,每個(gè)乘客一個(gè)線程晨逝,當(dāng)?shù)竭_(dá)客車容量20人時(shí)蛾默,放開這些乘客,讓他們上車買票坐車咏花。

  • Semaphore
public Semaphore(int permits)  // 構(gòu)造器 限制同時(shí)通過的數(shù)量趴生,獲取后需要自己釋放  fair指是否是公平鎖即先到先得
public Semaphore(int permits, boolean fair)

public void acquire() throws InterruptedException // 獲取1個(gè)許可  -- 阻塞的,會(huì)一直等待
public void acquire(int permits) throws InterruptedException // 獲取permits個(gè)許可  -- 阻塞的昏翰,會(huì)一直等待
public void release() // 釋放1個(gè)許可
public void release(int permits) // 釋放permits個(gè)許可

// 下面這4個(gè)是非阻塞獲取許可和超時(shí)阻塞獲取
public boolean tryAcquire()
public boolean tryAcquire(long timeout, TimeUnit unit)
public boolean tryAcquire(int permits)
public boolean tryAcquire(int permits, long timeout, TimeUnit unit) throws InterruptedException

應(yīng)用:限流請求數(shù)量

  • Phaser
public Phaser()  // 構(gòu)建相移器苍匆,標(biāo)識需要parties個(gè)到達(dá)才能往下走   可以通過register添加parties的數(shù)量
public Phaser(int parties)
public Phaser(Phaser parent)
public Phaser(Phaser parent, int parties)

public int register() // parties加1

public int arrive()// 只標(biāo)記到達(dá),不等待
public int arriveAndAwaitAdvance() //標(biāo)記到達(dá)并阻塞等待下一階段
public int arriveAndDeregister() //到達(dá)并將自己注銷

可以用多次CyclicBarrier實(shí)現(xiàn)Phaser的階段請求
但是CyclicBarrier不能動(dòng)態(tài)修改parties

應(yīng)用:幾個(gè)人參加多個(gè)運(yùn)動(dòng)比賽棚菊,需要每個(gè)人都到達(dá)浸踩,才能開始短跑比賽,需要每個(gè)人短跑完了统求,才能開始長跑检碗,需要每個(gè)人都長跑完了据块,才能開始跳遠(yuǎn)。折剃。另假。

2、ArrayList的線程安全版本

CopyOnWriteArrayList
Collections.synchronizedList(List list) 返回一個(gè)線程安全的SynchronizedList :實(shí)現(xiàn)synchronized (mutex)

3怕犁、auto increment

mysql
5.1.22 之前 表鎖
5.1.22之后 innodb_autoinc_lock_mode

  • 為0時(shí)边篮,跟以前一樣,表鎖
  • 為1時(shí)
    a簡單插入時(shí)奏甫,根據(jù)要插入的數(shù)量戈轿,計(jì)算出需要分配的id數(shù),只鎖分配id的過程
    b insert select 不能直接推測出要插入的數(shù)量阵子,和以前一樣直接鎖表
    c INSERT INTO t1 (c1,c2) VALUES (1,’a'), (NULL,’b'), (5,’c'), (NULL,’d');
    INSERT … ON DUPLICATE KEY UPDATE
    不確定最終插入多少條思杯,但是直到最壞條數(shù),所以分配最壞條件下的條數(shù)挠进,只分配id過程鎖住
  • 為2時(shí)
    不做預(yù)分配色乾,來一個(gè),鎖一個(gè)分配過程
    兩個(gè)insert語句的id分配可能會(huì)交叉奈梳,如果做主從的話杈湾,會(huì)導(dǎo)致主從的id不一致

默認(rèn)值時(shí)1
insert 解虱。攘须。。select 會(huì)發(fā)生鎖表

4殴泰、jsr版本

https://blog.csdn.net/belvine/article/details/90055231

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末于宙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子悍汛,更是在濱河造成了極大的恐慌捞魁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件离咐,死亡現(xiàn)場離奇詭異谱俭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宵蛀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門昆著,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人术陶,你說我怎么就攤上這事凑懂。” “怎么了梧宫?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵接谨,是天一觀的道長摆碉。 經(jīng)常有香客問我,道長脓豪,這世上最難降的妖魔是什么巷帝? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮扫夜,結(jié)果婚禮上锅睛,老公的妹妹穿的比我還像新娘。我一直安慰自己历谍,他們只是感情好现拒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著望侈,像睡著了一般印蔬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脱衙,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天侥猬,我揣著相機(jī)與錄音,去河邊找鬼捐韩。 笑死退唠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荤胁。 我是一名探鬼主播瞧预,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仅政!你這毒婦竟也來了垢油?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤圆丹,失蹤者是張志新(化名)和其女友劉穎滩愁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辫封,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硝枉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倦微。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妻味。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖璃诀,靈堂內(nèi)的尸體忽然破棺而出弧可,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布棕诵,位于F島的核電站裁良,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏校套。R本人自食惡果不足惜价脾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笛匙。 院中可真熱鬧侨把,春花似錦、人聲如沸妹孙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢正。三九已至骇笔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚣崭,已是汗流浹背笨触。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雹舀,地道東北人芦劣。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像说榆,于是被迫代替她去往敵國和親虚吟。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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