J.U.C并發(fā)包簡介

J.U.C并發(fā)包簡介

J.U.C并發(fā)包, 即java.util.concurrent包, 是JDK的核心工具包, 是JDK1.5之后, 由 Doug Lea實現(xiàn) 并引入.
整個J.U.C包按照功能可劃分如下:

  • J.U.C_locks: 鎖框架
  • J.U.C_atomic: 原子類框架
  • J.U.C_sync: 同步器框架
  • J.U.C_collections: 集合框架
  • J.U.C_executors: 執(zhí)行器框架

J.U.C_locks 鎖框架

早期的JDK版本中, 僅僅提供了synchronizd桩皿、wait幢炸、notify等等比較底層的多線程同步工具, 開發(fā)人員如果需要開發(fā)復雜的多線程應用, 通常需要基于JDK提供的這些基礎工具進行封裝, 開發(fā)自己的工具類. JDK1.5+后, Doug Lea根據(jù)一系列常見的多線程設計模式, 設計了JUC并發(fā)包, 其中java.util.concurrent.locks包下提供了一系列基礎的鎖工具, 用以對synchronizd、wait宛徊、notify等進行補充佛嬉、增強.

  • 接口
    • Lock
    • Condition
    • ReadWriteLock
  • 實現(xiàn)類
    • ReentrantLock
    • ReentrantReadWriteLock
    • StampedLock
  • 輔助類
    • LockSupport
    • AbstractOwnableSynchronizer
      • AbstractQueuedLongSynchronizer
      • AbstractQueuedSynchronizer
本部分相關(guān)文章:

J.U.C_atomic 原子類框架

早期的JDK版本中, 如果要并發(fā)的對Integer暖呕、Long赡盘、Double之類的Java原始類型或引用類型進行操作, 一般都需要通過鎖來控制并發(fā), 以防數(shù)據(jù)不一致.
從JDK1.5開始, 引入了java.util.concurrent.atomic工具包, 該包提供了許多Java原始/引用類型的映射類, 如AtomicInteger缰揪、AtomicLong葱淳、AtomicBoolean, 這些類可以通過一種“無鎖算法”, 線程安全的操作Integer、Long艳狐、Boolean等原始類型.
所謂“無鎖算法”, 其實底層就是通過Unsafe類實現(xiàn)的一種比較并交換的算法, 大致的結(jié)構(gòu)如下: boolean compareAndSet(expectedValue, updateValue); 當希望修改的值與expectedValue相同時, 則嘗試將值更新為updateValue, 更新成功返回true, 否則返回false.

  • 更新基本類型
    • AtomicBoolean
    • AtomicInteger
    • AtomicLong
  • 更新數(shù)組類型
    • AtomicIntegerArray
    • AtomicLongArray
    • AtomicReferenceArray
  • 更新引用類型
    • AtomicReference
    • AtomicMarkableReference
    • AtomicStampedReference
  • 更新字段
    • AtomicIntegerFieldUpdater
    • AtomicLongFieldUpdater
    • AtomicReferenceFieldUpdater
  • 其他
    • Striped64
      • DoubleAccumulator
      • DoubleAdder
      • LongAccumulator
      • LongAdder
本部分相關(guān)文章:

J.U.C_sync 同步器框架

這里的J.U.C_sync同步器框架, 是指java.util.concurrent包下一些輔助同步器類, 每個類都有自己適合的使用場景:

  • CountDownLatch: 倒數(shù)計數(shù)器, 構(gòu)造時設定計數(shù)值, 當計數(shù)值歸零后, 所有阻塞線程恢復執(zhí)行. 內(nèi)部實現(xiàn)了AQS框架.
  • CyclicBarrier: 循環(huán)柵欄, 構(gòu)造時設定等待線程數(shù), 當所有線程都到達柵欄后, 柵欄放行. 其內(nèi)部通過ReentrantLock和Condition實現(xiàn)同步.
  • Semaphore: 信號量, 類似于令牌, 用于控制共享資源的訪問數(shù)量. 其內(nèi)部實現(xiàn)了AQS框架.
  • Exchanger: 交換器, 類似于雙向柵欄, 用于線程之間的配對和數(shù)據(jù)交換. 其內(nèi)部根據(jù)并發(fā)情況有“單槽交換”和“多槽交換”之分.
  • Phaser: 多階段柵欄, 相當于CyclicBarrier的升級版, 可用于分階段任務的并發(fā)控制執(zhí)行. 其內(nèi)部比較復雜, 支持樹形結(jié)構(gòu), 以減少并發(fā)帶來的競爭.
本部分相關(guān)文章:

J.U.C_collections 集合框架

這里的J.U.C_collections集合框架, 是指java.util.concurrent包下的一些同步集合類, 按類型劃分可以分為: 符號表毫目、隊列Set集合镀虐、列表 四大類, 每個類都有自己適合的使用場景.

  • 符號表
    • ConcurrentMap: 接口
      • ConcurrentNavigableMap
        • ConcurrentSkipListMap
      • ConcurrentHashMap
  • 隊列
    • BlockingQueue
      • TransferQueue
        • LinkedTransferQueue
      • BlockingDeque
        • LinkedBlockingDeque
      • LinkedBlockingQueue
      • ArrayBlockingQueue
      • PriorityBlockingQueue
      • DelayQueue
    • ConcurrentLinkedQueue
    • ConcurrentLinkedDueue
  • Set集合
    • CopyOnWriteArraySet
    • ConcurrentSkipListSet
  • 列表
    • CopyOnWriteArrayList
本部分相關(guān)文章:

J.U.C_executors 執(zhí)行器框架

executors框架是整個J.U.C包中類/接口關(guān)系最復雜的框架, executors其實可以劃分為3大塊, 每一塊的核心都是基于Executor這個接口.

  • 線程池
  • Future模式
  • Fork/Join框架
本部分相關(guān)文章:

本文借鑒自segmentfault并發(fā)專欄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刮便,一起剝皮案震驚了整個濱河市绽慈,隨后出現(xiàn)的幾起案子恨旱,更是在濱河造成了極大的恐慌坝疼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仪芒,死亡現(xiàn)場離奇詭異耕陷,居然都是意外死亡,警方通過查閱死者的電腦和手機啃炸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膀钠,“玉大人掏湾,你說我怎么就攤上這事肿嘲。” “怎么了雳窟?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵封救,是天一觀的道長。 經(jīng)常有香客問我誉结,道長,這世上最難降的妖魔是什么惩坑? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮趾痘,結(jié)果婚禮上蔓钟,老公的妹妹穿的比我還像新娘扼脐。我一直安慰自己奋刽,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布肚吏。 她就那樣靜靜地躺著狭魂,像睡著了一般罚攀。 火紅的嫁衣襯著肌膚如雪雌澄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天炫掐,我揣著相機與錄音,去河邊找鬼募胃。 笑死,一個胖子當著我的面吹牛痹束,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祷嘶,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烛谊!你這毒婦竟也來了环壤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤郑现,失蹤者是張志新(化名)和其女友劉穎荧降,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朵诫,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年废累,在試婚紗的時候發(fā)現(xiàn)自己被綠了脱盲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡钱反,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哎壳,到底是詐尸還是另有隱情,我是刑警寧澤归榕,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布吱涉,位于F島的核電站驶乾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏级乐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一风科、第九天 我趴在偏房一處隱蔽的房頂上張望乞旦。 院中可真熱鬧,春花似錦兰粉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戴甩。三九已至,卻和暖如春甜孤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缴川。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工描馅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人流昏。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像况凉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闷营,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

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