【Java併發專題】27篇文章詳細總結Java併發基礎知識

努力的意義,就是,在之後的日子裏,放眼望去全是本身喜歡的人和事!java

github:github.com/CL0610/Java…,歡迎題issue和Pull request。全部的文檔都是本身親自碼的,若是以爲不錯,歡迎給star鼓勵支持 :)git

整個系列文章爲Java併發專題,一是本身的興趣,二是,這部分在實際理解上頗有難度,另外在面試過程當中也是常常被問到。因此在學習過程當中,記錄了Java併發相關的基礎知識,一是本身對知識可以創建體系,同時也但願有幸可以對其餘人有用。github

關於Java併發專題:面試

(1)包含了併發的基礎知識,每一個標題連接到一篇具體的文章;編程

(2)包含了秋招面試的問題,弄懂了會讓你有所收穫(也祝你們都能找到心儀的工做 :) )數組

(3)在閱讀過程當中,若是有所幫助,麻煩點贊,算是對我碼字的這份堅持的鼓勵。數據結構

注:轉載請標明原處,謝謝!併發

  1. 基礎知識app

    1.1 併發編程的優缺點函數

    知識點:(1)爲何要用到併發?(優勢);(2)併發編程的缺點;(3)易混淆的概念

    1.2 線程的狀態和基本操做

    知識點:(1)如何新建線程;(2)線程狀態的轉換;(3)線程的基本操做;(4)守護線程Daemon;

  2. 併發理論(JMM)

    java內存模型以及happens-before規則

    知識點:(1)JMM內存結構;(2)重排序;(3)happens-before規則

  3. 併發關鍵字

    3.1 讓你完全理解Synchronized

    知識點:(1)如何使用synchronized;(2)monitor機制;(3)synchronized的happens-before關係;(4)synchronized的內存語義;(5)鎖優化;(6)鎖升級策略

    3.2 讓你完全理解volatile

    知識點:(1)實現原理;(2)happens-before的關係推導;(3)內存語義;(4)內存語義的實現

    3.3 你覺得你真的瞭解final嗎?

    知識點:(1)如何使用;(2)final的重排序規則;(3)final實現原理;(4)final引用不能從構造函數中「溢出」(this逃逸)

    3.4 三大性質總結:原子性,有序性,可見性

    知識點:(1)原子性:synchronized;(2)可見性:synchronized,volatile;(3)有序性:synchronized,volatile

  4. Lock體系

    4.1 初識Lock與AbstractQueuedSynchronizer(AQS)

    知識點:(1)Lock和synchronized的比較;(2)AQS設計意圖;(3)如何使用AQS實現自定義同步組件;(4)可重寫的方法;(5)AQS提供的模板方法;

    4.2 深刻理解AbstractQueuedSynchronizer(AQS)

    知識點:(1)AQS同步隊列的數據結構;(2)獨佔式鎖;(3)共享式鎖;

    4.3 再一次理解ReentrantLock

    知識點:(1)重入鎖的實現原理;(2)公平鎖的實現原理;(3)非公平鎖的實現原理;(4)公平鎖和非公平鎖的比較

    4.4 深刻理解讀寫鎖ReentrantReadWriteLock

    知識點:(1)如何表示讀寫狀態;(2)WriteLock的獲取和釋放;(3)ReadLock的獲取和釋放;(4)鎖降級策略;(5)生成Condition等待隊列;(6)應用場景

    4.5 詳解Condition的await和signal等待/通知機制

    知識點:(1)與Object的wait/notify機制相比具備的特性;(2)與Object的wait/notify相對應的方法;(3)底層數據結構;(4)await實現原理;(5)signal/signalAll實現原理;(6)await和signal/signalAll的結合使用;

    4.6 LockSupport工具

    知識點:(1)主要功能;(2)與synchronized阻塞喚醒相比具備的特點;

  5. 併發容器

    5.1 併發容器之ConcurrentHashMap(JDK 1.8版本)

    知識點:(1)關鍵屬性;(2)重要內部類;(3)涉及到的CAS操做;(4)構造方法;(5)put執行流程;(6)get執行流程;(7)擴容機制;(8)用於統計size的方法的執行流程;(9)1.8版本的ConcurrentHashMap與以前版本的比較

    5.2 併發容器之CopyOnWriteArrayList

    知識點:(1)實現原理;(2)COW和ReentrantReadWriteLock的區別;(3)應用場景;(4)爲何具備弱一致性;(5)COW的缺點;

    5.3 併發容器之ConcurrentLinkedQueue

    知識點:(1)實現原理;(2)數據結構;(3)核心方法;(4)HOPS延遲更新的設計意圖

    5.4 併發容器之ThreadLocal

    知識點:(1)實現原理;(2)set方法原理;(3)get方法原理;(4)remove方法原理;(5)ThreadLocalMap

    一篇文章,從源碼深刻詳解ThreadLocal內存泄漏問題

    知識點:(1)ThreadLocal內存泄漏原理;(2)ThreadLocal的最佳實踐;(3)應用場景

    5.5 併發容器之BlockingQueue

    知識點:(1)BlockingQueue的基本操做;(2)經常使用的BlockingQueue;

    併發容器之ArrayBlockingQueue和LinkedBlockingQueue實現原理詳解

  6. 線程池(Executor體系)

    6.1 線程池實現原理

    知識點:(1)爲何要用到線程池?(2)執行流程;(3)構造器各個參數的意義;(4)如何關閉線程池;(5)如何配置線程池;

    6.2 線程池之ScheduledThreadPoolExecutor

    知識點:(1)類結構;(2)經常使用方法;(3)ScheduledFutureTask;(3)DelayedWorkQueue;

    6.3 FutureTask基本操做總結

    知識點:(1)FutureTask的幾種狀態;(2)get方法;(3)cancel方法;(4)應用場景;(5)實現 Runnable接口

  7. 原子操做類

    7.1 Java中atomic包中的原子操做類總結

    知識點:(1)實現原理;(2)原子更新基本類型;(3)原子更新數組類型;(4)原子更新引用類型;(5)原子更新字段類型

  8. 併發工具

    8.1 大白話說java併發工具類-CountDownLatch,CyclicBarrier

    知識點:(1)倒計時器CountDownLatch;(2)循環柵欄CyclicBarrier;(3)CountDownLatch與CyclicBarrier的比較

    8.2 大白話說java併發工具類-Semaphore,Exchanger

    知識點:(1)資源訪問控制Semaphore;(2)數據交換Exchanger

  9. 併發實踐

    9.1 一篇文章,讓你完全弄懂生產者--消費者問題

JAVA併發知識圖譜

可移動到新窗口,放大查看效果更好或者查看原圖

知識圖譜原圖連接,若是有用,可克隆給本身使用

Java併發知識知識圖譜
相關文章
相關標籤/搜索