什么是juc
juc
是java中java.util.concurrent
包的簡稱.它位于jdk的rt.jar中,是jdk的核心工具包之一。從字面上來理解就是java并發(fā)工具包。
其主要內(nèi)容包含3個部分atomic
包、locks
包以直接在該包下的直接接口和類。其主要功能如下
-
atomic
支持原子操作類相關代碼。 -
locks
java中鎖相關代碼寥袭。 - 直接接口和類是其他并發(fā)容器相關代碼路捧。
atomic
這個包提供了一系列原子類
,這些類是通過CAS
來提供原子操作支持的,可以保證多線程環(huán)境下纠永,當某個線程在執(zhí)行atomic的方法時鬓长,不會被其他線程打斷,而別的線程就像自旋鎖一樣尝江,一直等到該方法執(zhí)行完成涉波,才由JVM從等待隊列中選擇一個線程執(zhí)行。Atomic類在軟件層面上是非阻塞的炭序,它的原子性其實是在硬件層面上借助相關的指令來保證的啤覆。
Atomic包中的類可以分成5組:
原子更新基本類型
- AtomicBoolean
- AtomicInteger
- AtomicLong
原子更新數(shù)組類型
- AtomicIntegerArray
- AtomicLongArray
- AtomicReferenceArray
原子更新字段類型
- AtomicIntegerFieldUpdater
- AtomicLongFieldUpdater
- AtomicStampedReference
原子更新引用類型
- AtomicReference
- AtomicReferenceFieldUpdater
- AtomicMarkableReference
累加器
- DoubleAccumulator
- LongAccumulator
- DoubleAdder
- LongAdder
- Striped64
locks
這個包主要提供了很多java中的鎖.例如:ReentrantLock
,ReentrantReadWriteLock
...等等.這些類就是通過AQS
來實現(xiàn)的.locks
包里面最重要的就是提供了Lock
和ReadWrite
兩種接口,提供兩種類型的鎖惭聂。這兩個接口也就形成了整個locks包的基石窗声。
Lock
包內(nèi)的接口和類列表如下
- AbstractOwnableSynchronizer
- AbstractQueuedLongSynchronizer
- AbstractQueuedSynchronizer
- Condition
- Lock
- LockSupport
- ReadWriteLock
- ReentrantLock
- ReentrantReadWriteLock
- StampedLock
其他
其他直接在juc包下的類也分為以這么幾種類型:集合類
、executors類
辜纲、工具類
笨觅、獨立類
、異常類
集合類
- 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
獨立類
- interface Callable
- interface RejectedExecutionHandler
- enum TimeUnit
- interface ThreadFactory
- class Phaser
- class ThreadLocalRandom
異常類
- class RejectedExecutionException
- class BrokenBarrierException
- class CancellationExceptionclass CompletionException
- class ExecutionException
- class TimeoutException