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

你聽___發表於2018-05-06

原創文章&經驗總結&從校招到 A 廠一路陽光一路滄桑

詳情請戳www.codercc.com

github:github.com/CL0610/Java…,歡迎題 issue 和 Pull request。所有的文件都是自己親自碼的,如果覺得不錯,歡迎給 star 鼓勵支援 :)

整個系列文章為Java 併發專題,一是自己的興趣,二是,這部分在實際理解上很有難度,另外在面試過程中也是經常被問到。所以在學習過程中,記錄了 Java 併發相關的基礎知識,一是自己對知識能夠建立體系,同時也希望有幸能夠對其他人有用。

關於 Java 併發專題:

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

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

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

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

1. 基礎知識

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 一篇文章,讓你徹底弄懂生產者--消費者問題

10.JAVA 併發知識圖譜

可移動到新視窗,放大檢視效果更好或者檢視原圖

知識圖譜原圖連結,如果有用,可克隆給自己使用

Java併發知識知識圖譜
Java併發知識知識圖譜

相關文章