JDK8 併發包一覽

徐家三少發表於2017-06-02

  

《java併發程式設計系統與模型》已出版,真心希望大家能支援這本書,您的支援就是我最大的動力!

AbstractExecutorService: 抽象的執行器。
ArrayBlockingQueue: 一個有邊界的先進先出的阻塞佇列
BlockingDeque: 介面描述,阻塞雙端佇列

BlockingQueue: 介面,阻塞佇列

BrokenBarrierException

Callable: 帶返回值的非同步任務介面。其值不能直接被獲取,而是要通過Future來獲取

CancellationException: 如果在執行器框架中,帶返回值的任務已經被取消而無法重新取回,將丟擲此異常

CompletableFuture: 1.8中新增的類
將執行的結果以回撥的方式處理,而不是阻塞等待。“被喻作可完成的Future”

CompletionException: 在計算結果或者任務的過程中丟擲的異常
CompletionService: 對應ExecutorService ,ExecutorService每次執行都需要等待返回結果,CompletionService則可集中的等待返回結果。

CompletionStage: 代表非同步計算中的一個階段或步驟。

ConcurrentHashMap: 併發的,執行緒安全的HashMap
ConcurrentLinkedDeque: 併發的,執行緒安全的無界雙端佇列
ConcurrentLinkedQueue: 併發的,執行緒安全的無界佇列

ConcurrentMap: 併發Map通用介面
ConcurrentNavigableMap: 併發的NavigableMap。這種Map可以按照可以按照鍵的升序或降序訪問和遍歷。
ConcurrentSkipListMap: 一個以跳錶(SkipList)作為資料結構的併發Map。Key有序(不是插入順序,而是Key的自然順序或者自定義順序)
LinkedHashMap 保證了插入順序
TreeMap按照Key來排序,實現了NavigableMap。說明是按照Key的自然順序。

ConcurrentSkipListSet: 一個以跳錶有序的,併發的Set集合

CopyOnWriteArrayList: CopyOnWrite容器

CopyOnWriteArraySet: CopyOnWrite容器

CountDownLatch: 一個同步工具類,它允許一個或多個執行緒一直等待,直到其他執行緒的操作執行完後再執行

CountedCompleter: 1.8出現的類
Java 8新增了一個稱為CountedCompleter的ForkJoinTask類的抽象子類。
該框架支援兩種型別的任務:不產生結果的任務和產生結果的任務。
RecursiveAction:類的例項表示不產生結果的任務。 RecursiveTask類的例項表示產生結果的任務。
CountedCompleter:任務可能產生結果,也可能不產生結果。

CyclicBarrier: :一個同步輔助類,它允許一組執行緒互相等待,直到到達某個公共屏障點

作用與CountDownLatch類似
Delayed: 延遲佇列的協議介面
DelayQueue: 延遲佇列
Exchanger: 可以在兩個執行緒之間交換資料,只能是2個執行緒,他不支援更多的執行緒之間互換資料。

ExecutionException

Executor: 執行器介面

ExecutorCompletionService: CompletionService的具體實現
Executors: ExecutorService的生產工廠

ExecutorService: 執行器
ForkJoinPool:是一個可以執行ForkJoinTask的ExcuteService

ForkJoinTask: 代表一個需要執行的任務

ForkJoinWorkerThread: ForkJoinPool管理著ForkJoinWorkerThread執行緒,ForkJoinWorkerThread執行緒內部有一個雙端佇列,這個雙端佇列主要由一個陣列queue、陣列下標queueBase、陣列上標queueTop三個值保證。

Future: 介面 代表著一個非同步執行的結果
FutureTask: 一個可取消的非同步計算,FutureTask 實現了Future的基本方法,提空 start cancel 操作,可以查詢計算是否已經完成

LinkedBlockingDeque: 基於連結串列的,執行緒安全的雙端佇列,可以指定連結串列容量,也可以不指定(預設Integer.MAX_VALUE)

LinkedBlockingQueue: 基於連結串列的,執行緒安全的佇列,可以指定連結串列容量,也可以不指定(預設Integer.MAX_VALUE)

LinkedTransferQueue: TransferQueue的具體實現

Phaser: 包含了CyclicBarrier和CountDownLatch的相關功能。但提供更多更復雜的功能

PriorityBlockingQueue: 支援優先順序的阻塞佇列

RecursiveAction: ForkJoinTask的實現,沒有返回值

RecursiveTask: ForkJoinTask的實現,帶返回值

RejectedExecutionException

RejectedExecutionHandler: 實現RejectedExecutionHandler,在執行器中管理被拒絕的任務

RunnableFuture: 介面比較簡單,繼承了Runnable、Future介面。並只有一個run方法作為 Runnable 的 Future。成功執行 run 方法可以完成 Future 並允許訪問其結果。

RunnableScheduledFuture: 可返回結果的週期性執行介面

ScheduledExecutorService: 可週期性地執行任務的執行器的介面
ScheduledFuture: 執行週期性結果的介面
ScheduledThreadPoolExecutor: 可週期性地執行任務的執行器的實現

Semaphore: 訊號量

SynchronousQueue:
這樣 一種阻塞佇列,其中每個 put 必須等待一個 take,反之亦然。同步佇列沒有任何內部容量,甚至連一個佇列的容量都沒有。
不能在同步佇列上進行 peek

ThreadFactory 建立執行緒的工廠。比如需要對執行緒設定編號和名字等
ThreadLocalRandom 多執行緒模式下的隨機數生成器
ThreadPoolExecutor 執行緒池執行器
TimeoutException 阻塞操作的超市異常
TimeUnit 執行緒安全的時間轉換類
TransferQueue TransferQueue是一個聰明的佇列,它是ConcurrentLinkedQueue, SynchronousQueue (在公平模式下), 無界的LinkedBlockingQueues等的超集。生產者會一直阻塞直到所新增到佇列的元素被某一個消費者所消費(不僅僅是新增到佇列裡就完事)。新新增的transfer方法用來實現這種約束。顧名思義,阻塞就是發生在元素從一個執行緒transfer到另一個執行緒的過程中,它有效地實現了元素線上程之間的傳遞

AtomicBoolean 原子操作類
AtomicInteger

AtomicIntegerArray 原子的整形陣列操作類

AtomicIntegerFieldUpdater 原子更新引用型別裡的欄位。
AtomicLong Long型別原子操作
AtomicLongArray Long型別素組原子操作

AtomicLongFieldUpdater 原子更新引用型別的Long欄位

AtomicMarkableReference 維護帶有標記位的物件引用,可以原子方式對其進行更新

AtomicReference 原子更新物件
AtomicReferenceArray 原子更新物件陣列
AtomicReferenceFieldUpdater 原子更新成員變數
AtomicStampedReference 帶有時間戳的原子物件引用

累加器:

DoubleAccumulator

DoubleAdder
LongAccumulator

LongAdder
Striped64

包 java.util.concurrent.locks

AbstractOwnableSynchronizer 抽象同步器
AbstractQueuedLongSynchronizer 64位版本的抽象同步器。與AbstractQueuedSynchronizer除了 state不一樣,全都一樣
AbstractQueuedSynchronizer 抽象同步器 繼承自AbstractOwnableSynchronizer
Condition 條件
Lock 通用的鎖介面
LockSupport 底層的執行緒操作
ReadWriteLock 讀寫鎖的統一介面
ReentrantLock 可重入鎖
ReentrantReadWriteLock 可重入的讀寫鎖
StampedLock JAVA8 新增 StampedLock要比ReentrantReadWriteLock更加廉價,也就是消耗比較小。

相關文章