什么是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包里面最重要的就是提供了Lock和ReadWrite兩種接口,提供兩種類型的鎖。這兩個(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