java併發知識概述

    最近利用了兩個星期的空閒時間,寫了幾篇關於Java併發模塊的內容。寫的緣由以下:java

  1. 感受寫博客應該能鍛鍊人的條理,提高記憶力,今年尤爲感受記憶力降低得厲害,因此就是硬逼着本身寫了幾篇。併發

  2. 由於本人就是幹大數據的,有時候避免不了須要去分析大數據的源碼,去優化,修改大數據的源碼,感受到若是有同窗的java併發的知識不過關的話,有可能連閱讀源碼的任務也完成不了,更不用談去優化,修改源碼了。因此想寫幾篇博客多少能幫到須要的同窗。固然我寫的時候也沒刻意去設計,更多的是就是把jdk的源碼給註釋了一下,註釋信息卻是寫得挺詳細的。框架

  3. 建議,引導你們能夠去看看java併發包的源碼,由於java併發包的源碼是世界java水平一流的大師寫的,代碼設計得超級漂亮,你們能夠從裏面學到不少優秀的設計思想。工具

整個java.util.concurrent包,按照功能能夠大體劃分以下:學習

juc-atomic 原子類框架​juc-locks 鎖框架​juc-sync 同步器框架​juc-collections 集合框架​juc-executors 執行器框架

學習併發的知識,我的認爲第一步應該要搞清楚java併發的三大特性。因此我就寫了一篇《從硬件層面聊聊volatile和synchonzied關鍵字》, 比較深刻的講解了關於併發特性的知識,若是能掌握這篇裏面的知識,那確定對java的併發的特性掌握得很紮實了。大數據

    

在有了java併發的認識之後。那麼我認爲先熟悉juc-atomic類。可是juc-atomic類源碼都是很相似的,因此我挑了其中的一個類對其源碼寫了註釋《jdk源碼之AtomicInteger源碼註釋》。看懂這篇之後再去分析其他的juc-atomic類就簡單多了。優化

學習了Atomic類型的類之後,接下來要學習的是juc-locks鎖框架。這個裏面有一個很是重要的對象就是AQS,AQS是一個抽象類。ReentantLock,ReentantReadWriteLock鎖都是基於這個實現的。因此我挑了ReentantLock類對其源碼進行了註釋《jdk源碼之ReentantLock源碼註釋》,深刻理解了AQS之後,再去看ReentantReadWriteLock的源碼就簡單多了。併發包裏面的juc-sync 同步器框架裏面的工具類CountDownLatch,CyclicBarrier等也是基於AQS是實現的,因此同窗們必定掌握好AQS的原理。atom

    有了上面的知識,咱們就能夠去看juc-collections 集合框架的源碼了。我並無把全部的類都剖析了一遍,而是選了兩個重要的類對源碼進行了註釋。由於這兩個類是平時使用頻率比較高,並且設計思想也很好。很是值得咱們去學習。《JDK源碼之LinkedBlockingQueue源碼註釋》《JDK源碼之ConCurrentHashMap源碼註釋》.net

    學完了前面全部的知識,咱們就再學習對前面全部知識綜合運用的一個模塊juc-executors 執行器框架。裏面講了多個線程池,我挑了其中一個比較重要的線程池,對其源碼進行了註釋。《JDK源碼之FixedThreadPool源碼註釋》,看懂這個線程池的源碼之後再去分析其餘的線程池就比較簡單了。線程

   祝閱讀這篇文章的同窗學業有成

    但願能幫助到部分同窗。

相關文章
相關標籤/搜索