一線大廠招聘,高併發系統研發,進階高級程序員…併發編程是必須掌握的技能。而深究其原理、源碼才能寫出高質量的代碼。
JDK8併發編程實戰源碼探究系列涉及java.util.concurrent
包幾乎所有類或者接口的原理、使用實戰、源碼講解。
中間可能還會穿插計算機原理底層、CPU、操作系統、JMM、字節碼分析等知識點,更深刻、全方位掌握併發編程。
JDK8併發包概覽
以下信息依據 openjdk8描述:
java.util.concurrent
直接包裏面包含 59 個類或者接口。
java.util.concurrent.atomic
裏面包含18個類或者接口。
java.util.concurrent.locks
裏面包含11個類或者接口。
原子類(atomic包)
說明,原子類或者說CAS操作都依賴於Unsafe類,所以這個類也需要了解。
一類
- AtomicInteger
- AtomicBoolean
- AtomicIntegerArray
- AtomicLong
- AtomicReference
二類
- AtomicMarkableReference
- AtomicStampedReference
三類
- AtomicIntegerFieldUpdater
- AtomicLongFieldUpdater
- AtomicReferenceFieldUpdater
四類
- Striped64
- LongAdder
- DoubleAdder
- LongAccumulator
- DoubleAccumulator
鎖(locks包、AQS)
一類
- AbstractQueuedSynchronizer
- Lock 接口
- ReentrantLock
- Condition
- LockSupport
二類
- ReadWriteLock 接口
- ReentrantReadWriteLock
- StampedLock
併發工具類(concurrent直接包)
- CountDownLatch
- CyclicBarrier
- Semaphore
- Exchanger
- Phaser
併發集合類(concurrent直接包)
- ConcurrentHashMap
- ConcurrentLinkedQueue
- ConcurrentSkipListMap
- CopyOnWriteArrayList
隊列相關類(concurrent直接包)
- ArrayBlockingQueue
- LinkedBlockingQueue
- PriorityBlockingQueue
- SynchronousQueue
- DelayQueue
- LinkedTransferQueue
線程池(concurrent直接包)
- Executor 、 ExecutorService 、ThreadFactory、RejectedExecutionHandler接口
- Executors
- ThreadPoolExecutor
- ScheduledThreadPoolExecutor
- ThreadLocalRandom
- TimeUnit
Fork/Join
- ForkJoinPool
- ForkJoinTask
- ForkJoinWorkerThread
Callable&Future&CompletableFuture
- Callable
- FutureTask
- CompletableFuture
- ExecutorCompletionService