原创 高併發學習之01JVM運行核心邏輯

開啓併發編程1. Java文件是怎麼被JVM運行的2. JAVAP 查看class文件2.1 什麼是class文件2.2 Javap命令直接 查看class文件2.3 IDEA 查看class文件3.說明 1. Java文件是怎麼

原创 高併發學習之05關鍵字synchronized

瞭解關鍵字synchronized1.synchronized簡介2. synchronized的三種應用方式3.synchronized的字節碼指令4.CAS4.1 竟態條件與臨界區4.2 共享資源4.3 不可變對象4.4 原子

原创 高併發學習之12ReentrantReadWriteLock的實現原理分析

ReentrantReadWriteLock原理分析1. 簡介2. 讀寫鎖的事例3. 讀寫鎖實現分析3.1 讀寫狀態的設計3.2 寫鎖的獲取與釋放3.3 讀鎖的獲取與釋放3.4 鎖降級4 總結 1. 簡介 同樣的在鎖的認識中,我們

原创 高併發學習之11ReentrantLock的實現原理分析

ReentrantLock的實現原理分析1. 簡介2. 重進入的實現方式3. 公平與非公平獲取鎖的區別4. 總結 1. 簡介 在鎖的認識中我們提到了ReentrantLock 的基本使用,以及在上篇文章AQS中,也重點說明了AQS

原创 高併發學習之14鎖的源碼在梳理

通過重入鎖再次梳理鎖的知識點1. 簡介2. Lock3. AbstractQueuedSynchronizer(AQS抽象隊列同步器)4. 從ReentrantLock重入鎖開始 1. 簡介 在前面的文章中我們介紹了lock接口,

原创 高併發學習之08原子操作類

JDK中13種原子操作類1. 簡介2. 原子更新基本類型類2.1.原子更新基本類型類2.1.2 原子類實現原理3. 原子更新數組4. 原子更新引用類型5. 原子更新字段類 1. 簡介 在前面文章synchronized中,我們介紹

原创 高併發學習之04線程間通信

必須知道的線程通信1.線程間通信1.1 線程間協同1.2 suspend/resume1.3 wait/notify1.4 wait/notify的經典範式1.6 park/unpark 的使用1.7 Thread.join()的

原创 高併發學習之10AQS的理解

鎖的關鍵實現方式AQS1. AQS簡介2. AQS簡單事例3. AQS內部分析4. 獨佔式同步狀態獲取與釋放5. 共享式同步狀態獲取與釋放6. 獨佔式超時獲取同步狀態7. 簡單的Demo8. 總結 1. AQS簡介 在上一篇鎖的認

原创 高併發學習之03JMM(Java內存模型)

瞭解JMM是什麼1.硬件層面上的概覽1.1.CPU的多級緩存1.2.緩存一致性問題1.2.1 總線鎖1.2.2 緩存鎖1.2.3 緩存一致性協議1.3. CPU優化-運行時指令重排1.3.1 帶來的兩個問題1.3.2 內存屏障(M

原创 容器學習之01ArrayList

搞懂ArrayList1. 簡介2. 簡單事例3. 源碼分析3.1 構造函數3.2 新增和擴容實現3.3 擴容的本質3.4 刪除3.5 迭代器4. 總結 1. 簡介 ArrayList 我們幾乎每天都會使用到,但關於ArrayLi

原创 併發編程學習筆記大綱

併發編程中已完成或計劃完成的筆記 JVM運行核心邏輯:Java文件編譯成二進制文件存在的編譯重排序問題的認識 線程基礎知識:瞭解線程的6種狀態、以及基礎的API JMM的認識:瞭解硬件層面上的內存屏障、運行時指令重排序、JMM模

原创 高併發學習之06關鍵字volatile

瞭解關鍵字volatile1. volatile 簡介2. volatile原理3. 簡單瞭解下JMM中定義的happens-before規則4. volatile寫-讀建立的happens-before關係5.volatile寫

原创 Netty入門(二)-------HelloWord

Netty入門(一)——爲什麼使用Netty 上篇簡單介紹了下爲什麼使用Netty,這篇我們將簡單的搭個HelloWord。 在Netty使用手冊中說了世界上最簡單的協議不是”Hello,World!”,是DISCARD,他是一

原创 高併發學習之13Condition的實現原理分析

瞭解Condition接口1. 簡介2. Condition使用3. Condition實現分析3.1 等待隊列3.2 等待3.3 通知4. 總結5. 補充一個例子 1. 簡介 任意一個Java對象,都擁有一組監視器方法(定義在j

原创 Java根據Id快速最優分組

話不多說,都有註釋直接上代碼。 Integer[] userArr = {10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008,