JUC概述

什么是juc

juc是java中java.util.concurrent包的簡(jiǎn)稱.它位于jdk的rt.jar中,是jdk的核心工具包之一。從字面上來(lái)理解就是java并發(fā)工具包。
其主要內(nèi)容包含3個(gè)部分atomic包、locks包以直接在該包下的直接接口和類。其主要功能如下

  • atomic 支持原子操作類相關(guān)代碼。
  • locksjava中鎖相關(guān)代碼。
  • 直接接口和類是其他并發(fā)容器相關(guān)代碼。

atomic

這個(gè)包提供了一系列原子類,這些類是通過(guò)CAS來(lái)提供原子操作支持的,可以保證多線程環(huán)境下,當(dāng)某個(gè)線程在執(zhí)行atomic的方法時(shí),不會(huì)被其他線程打斷,而別的線程就像自旋鎖一樣,一直等到該方法執(zhí)行完成,才由JVM從等待隊(duì)列中選擇一個(gè)線程執(zhí)行。Atomic類在軟件層面上是非阻塞的,它的原子性其實(shí)是在硬件層面上借助相關(guān)的指令來(lái)保證的。

Atomic包中的類可以分成5組:
原子更新基本類型

  • AtomicBoolean
  • AtomicInteger
  • AtomicLong

原子更新數(shù)組類型

  • AtomicIntegerArray
  • AtomicLongArray
  • AtomicReferenceArray

原子更新字段類型

  • AtomicIntegerFieldUpdater
  • AtomicLongFieldUpdater
  • AtomicStampedReference

原子更新引用類型

  • AtomicReference
  • AtomicReferenceFieldUpdater
  • AtomicMarkableReference

累加器

  • DoubleAccumulator
  • LongAccumulator
  • DoubleAdder
  • LongAdder
  • Striped64

locks

這個(gè)包主要提供了很多java中的鎖.例如:ReentrantLock,ReentrantReadWriteLock...等等.這些類就是通過(guò)AQS來(lái)實(shí)現(xiàn)的.locks包里面最重要的就是提供了LockReadWrite兩種接口,提供兩種類型的鎖。這兩個(gè)接口也就形成了整個(gè)locks包的基石。

Lock包內(nèi)的接口和類列表如下

  • AbstractOwnableSynchronizer
  • AbstractQueuedLongSynchronizer
  • AbstractQueuedSynchronizer
  • Condition
  • Lock
  • LockSupport
  • ReadWriteLock
  • ReentrantLock
  • ReentrantReadWriteLock
  • StampedLock

其他

其他直接在juc包下的類也分為以這么幾種類型:集合類executors類、工具類、獨(dú)立類、異常類

集合類

  • interface Delayed
  • interface TransferQueue
  • interface BlockingDeque
  • interface BlockingQueue
  • class DelayQueue
  • class ConcurrentLinkedDeque
  • class ConcurrentLinkedQueue
  • class LinkedBlockingDeque
  • class LinkedBlockingQueue
  • class LinkedTransferQueue
  • class ArrayBlockingQueue
  • class PriorityBlockingQueue
  • class SynchronousQueue
  • interface ConcurrentMap
  • interface ConcurrentNavigableMap
  • class ConcurrentHashMap
  • class ConcurrentSkipListMap
  • class ConcurrentSkipListSet
  • class CopyOnWriteArrayList
  • class CopyOnWriteArraySet

executors類

  • interface Future
  • interface RunnableFuture
  • interface ScheduledFuture
  • interface RunnableScheduledFuture
  • class FutureTask
  • class RecursiveTaskabstract
  • class RecursiveAction
  • abstract class ForkJoinTask
  • class ForkJoinPool
  • class ForkJoinWorkerThread
  • class CompletableFuture
  • class CountedCompleter
  • interface CompletionStage
  • interface CompletionService
  • class ExecutorCompletionService
  • interface Executor
  • interface ExecutorService
  • interface ScheduledExecutorService
  • abstract class AbstractExecutorService
  • class ScheduledThreadPoolExecutor
  • class ThreadPoolExecutor

工具類

  • class Semaphore
  • class CountDownLatch
  • class CyclicBarrier
  • class Exchanger
  • class Executors

獨(dú)立類

  • interface Callable
  • interface RejectedExecutionHandler
  • enum TimeUnit
  • interface ThreadFactory
  • class Phaser
  • class ThreadLocalRandom

異常類

  • class RejectedExecutionException
  • class BrokenBarrierException
  • class CancellationExceptionclass CompletionException
  • class ExecutionException
  • class TimeoutException
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java JUC總結(jié) 目錄 一、Java JUC簡(jiǎn)介 在 Java 5.0 提供了 java.util.concu...
    叨唧唧的閱讀 582評(píng)論 0 0
  • 1.JUC JUC:java.util.concurrent 在并發(fā)編程中使用的工具類 java.util.con...
    夜小十五天閱讀 338評(píng)論 0 0
  • 1、什么是JUC JUC:就是我們Java原生的并發(fā)包,和一些常用的工具類! java.util.concurre...
    成與敗的一點(diǎn)一滴閱讀 509評(píng)論 0 0
  • 知識(shí)點(diǎn): 線程生命周期(新建、運(yùn)行、阻塞、等待(一直等待)、超時(shí)等待(超時(shí)取消等待)、終止); Synchroni...
    CJ21閱讀 1,836評(píng)論 1 21
  • JUC——檢視閱讀 參考資料 JUC知識(shí)圖參考 JUC框架學(xué)習(xí)順序參考 J.U.C學(xué)習(xí)總結(jié)參考,簡(jiǎn)潔直觀 易百并發(fā)...
    卡斯特梅的雨傘閱讀 388評(píng)論 0 1

友情鏈接更多精彩內(nèi)容