JUC 包介紹
1. 前言
java.util.concurrent (縮寫 JUC)并發(fā)編程包是專門為 Java 并發(fā)編程設(shè)計的,在正式介紹 Java 并發(fā)工具之前,本節(jié)先帶領(lǐng)大家認識 Java 并發(fā)工具包,對 Java 并發(fā)工具在組織形式上有一個直觀的認識。
本節(jié)先介紹 JUC 包的版本歷史,接著介紹 JUC 包的組織形式和內(nèi)容結(jié)構(gòu)。
在了解了 JUC 包之后,心中有了整體概念,當(dāng)我們應(yīng)用到并發(fā)工具時,就可以很快定位選擇最恰當(dāng)?shù)墓ぞ呒右詰?yīng)用,或者能夠很快定位查閱相關(guān)工具的源代碼。
下面我們正式開始介紹。
2. JUC 包版本變遷
從 JDK1.5 開始,Java 官方在 rt.jar 核心 jar 包文件中增加了 java.util.concurrent 并發(fā)包,由 Doug Lea 大牛編寫實現(xiàn),并在后繼的主要版本中不斷對其增強、優(yōu)化。
在 JDK1.6 中,主要對基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)類進行了并發(fā)特性增強。
在 JDK1.7 中,主要對并發(fā)框架工具類進行了增強,新增了 ForkJoin 系列。
在 JDK1.8 中,主要對原子操作工具類進行了增強,增加了適用于更多場景的工具類。
3. JUC 包組織結(jié)構(gòu)
JUC 包在形式上是如何組織的呢?看下面表格。
包路徑 | 主要內(nèi)容 | 典型類型 |
---|---|---|
java.util.concurrent | 提供很多種最基本的并發(fā)工具類,包括對各類數(shù)據(jù)結(jié)構(gòu)的并發(fā)封裝,并發(fā)框架主要接口 | CountDownLatch,CyclicBarrier,Semaphore,Exchanger,Phaser,BlockingQueue,ConcurrentHashMap,ThreadPoolExecutor,F(xiàn)orkJoinPool |
java.util.concurrent.atomic | 提供各類原子操作工具類 | AtomicInteger, DoubleAdder,LongAccumulator,AtomicReference |
java.util.concurrent.locks | 提供各類鎖工具 | Lock,ReadWriteLock,ReentrantLock,StampedLock |
了解了形式上的組織方式,我們接下來從內(nèi)容角度看看 JUC 包的組織方式。
4. JUC 包內(nèi)容結(jié)構(gòu)
JUC 包提供了下面五大方面的內(nèi)容:
鎖(locks)部分:提供適合各類場合的鎖工具;
原子變量(atomic)部分:原子變量類相關(guān),是構(gòu)建非阻塞算法的基礎(chǔ);
并發(fā)框架(executor)部分:提供線程池相關(guān)類型;
并發(fā)容器(collections) 部分:提供一系列并發(fā)容器相關(guān)類型;
同步工具(tools)部分:提供相對獨立,且場景豐富的各類同步工具,如信號量、閉鎖、柵欄等功能;
下面我們通過思維導(dǎo)圖直觀展示 JUC 包內(nèi)容的內(nèi)在聯(lián)系。
5. 小結(jié)
通過本節(jié)介紹,大家對 java 并發(fā)工具包有了全局的直觀認識,本課程后繼主要針對上述表格中的典型類型展開介紹。