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