我是豬弟,豬在我心中不是蠢的代名詞
而是懶的代名詞
微信公衆號:glmapper工做室 java
在以前的學習過程當中,發現要學的東西越學越多,Java&計算機知識體系之大,要想學完談何容易,可是總結下來,在互聯網中有三大滾輪:分佈式、高併發、中間件,一口氣瘦不成一道閃電,必須逐一攻破。安全
想寫高併發好久了,可是這裏面有不少東西,真滴難! 今天總算是要開篇了,回想起來真的就像作夢同樣。微信
先來看一下併發包的總體結構: 數據結構
總體結構分爲三層,先看一下頂層:java.util.concurrent.ConcurrentHashMap
等)而後看一下中間層:多線程
AbstractQueueSynchronizer
):抽象隊列同步器,AQS是JUC同步器的基石,AQS定義了一套多線程訪問共享資源的同步器框架,許多同步類實現都依賴於它,如經常使用的ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch
等java.util.concurrent.atomic
包下的原子變量類而後看最底層:併發
volatile
語義,禁用指令重排序,進而保證有序性CompareAndSwap
,一種基於硬件的樂觀鎖實現,原理是「比較交換」,保證變量操做的原子性,可是存在 ABA
的問題。爲了防止看客們由於難以理解的底層原理以爲枯燥難懂【AQS真的挺很差理解的】,文章準備自頂而下來說述併發包的內容,而後在其中穿插一些底層的內容,最後不知不覺中底層就已經講完了。app
- 介紹常見同步器組件(併發工具類)的用法和實踐:
ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch 、Phaser 、Exchanger
- 介紹CAS、CLH鎖和AQS原理
- 併發工具類源碼分析:
ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch 、Phaser 、Exchanger
- 併發容器源碼分析:
ConcurrentHashMap 、ConcurrentLinkedQueue 、ConcurrentSkipListMap
- 阻塞隊列源碼分析:
ArrayBlockingQueue 、PriorityBlockingQueue 、DelayQueue 、SynchronousQueue 、LinkedTransferQueue 、LinkedBlockingDeque
- 執行器使用和源碼分析:
ThreadPoolExecutor 、ScheduledThreadPoolExecutor