原创 【併發編程】--- 阻塞隊列(BlockingQueue)簡介

源碼地址:https://github.com/nieandsun/concurrent-study.git 文章目錄1 阻塞隊列的含義2 爲什麼用? 有什麼好處?3 常用的BlockingQueue3.1 ArrayBlo

原创 【併發編程】 --- Lock/Condition完成生產者消費者模式+ABCABC順序打印問題

源碼地址:https://github.com/nieandsun/concurrent-study.git 文章目錄1 生產者消費者問題2 ABCABC。。。三個線程順序打印問題2.1 基本不費腦子的實現方式 --- 且比

原创 【併發編程】 --- 從五個維度對比synchronized關鍵字和Lock

文章目錄維度1 --- 從原始構成上來說維度2 --- 從使用方法上來說維度3 --- 從等待是否可中斷上來說維度4 --- 從加鎖是否公平角度來說維度5 --- 從線程間的通信來說 維度1 — 從原始構成上來說 synchr

原创 【併發編程&JVM】--- 強軟弱虛四種引用 + ThreadLocal內存泄漏原因分析

本篇文章整理自馬士兵老師的公開課(嗶哩嗶哩) 源碼地址:https://github.com/nieandsun/concurrent-study.git 文章目錄【1】強軟弱虛四種引用【1.1】強引用【1.2】軟引用【1.

原创 【併發編程】 --- Reentrantlock源碼解析3:公平鎖釋放鎖過程超詳細解析

文章目錄1 公平鎖釋放鎖的過程1.1 從源碼中看公平鎖釋放鎖的過程1.2 以源碼爲基礎總結出的公平鎖釋放鎖的流程2 需要思考的問題2.1 問題1 --- 釋放鎖的過程中有可能導致尾節點的ws爲-1麼 ---> 不可能2.2 問題2

原创 【併發編程】 --- Reentrantlock源碼解析2:公平鎖加鎖過程超詳細解析

文章目錄1 前情回顧 --- 同步方法交替執行時Reentrantlock公平鎖的邏輯2 線程t1搶到鎖並且沒釋放的情況2.1 線程t2、t3、t4......入隊 --- addWaiter(Node.EXCLUSIVE),

原创 【併發編程】 --- synchronized鎖的升級過程 + JDK1.6對synchronized關鍵字的其他優化簡介

文章目錄1 JDK1.6對synchronized關鍵字優化概覽2 synchronized鎖升級過程2.1 偏向鎖( Biased Locking ) --- 適用於同一個線程反覆進入同步代碼塊的情況2.1.1 什麼是偏向

原创 【併發編程】 --- 原來java對象的佈局是可以被這樣證明的!!!

文章目錄1 java對象佈局(hotspot虛擬機)簡介1.2 實例數據 --- 可以沒有1.3 對齊填充 --- 有可能會沒有1.4 對象頭1.4.1 對象頭在JDK(hotspot)源碼中具體的體現1.4.2 Mark W

原创 【實用小代碼】 --- 循環中刪除數組中指定元素的正確姿勢

文章目錄1 抽象出來的題目2 錯誤的示範3 正確的答案 今天寫一個前端邏輯的時候碰到了這種情況,並在前端小姐姐面前裝了一把☺☺☺ 並且這個問題貌似我在實際開發中碰到的次數還是挺多的,所以記錄一下,但是用的語言是java —》

原创 【併發編程】 --- CyclicBarrier原理簡介 + 使用方法

文章目錄1 原理簡介1.1 CyclicBarrier屏障原理1.1.1 await爲空參時1.1.2 await傳入時間參數時1.2 CyclicBarrier中的循環是什麼意思2 CountDownLatch和CyclicBa

原创 【併發編程】 --- CountDownLatch原理簡介 + 使用方法

文章目錄1 原理簡介2 具體使用方法2.1 demo1 --- await不傳入時間,保證當前線程的其他操作在最後執行2.2 demo2 --- await傳入時間t,當前線程等其他線程時間t後就運行其他操作2.3 發令槍

原创 【併發編程】 --- synchronized的使用姿勢

文章目錄1 總覽2 synchronized修飾靜態方法3 synchronized修飾靜態方法4 synchronized修飾非靜態代碼塊 源碼地址:https://github.com/nieandsun/concurren

原创 【併發編程】--- volatile底層原理

文章目錄1 volatile如何保證可見性2 volatile爲什麼不能保證原子性問題3 volatile可以保證有序性的原因3.1 單線程禁止重排序的規則 as-if-serial3.1 多線程禁止重排序的規則 happens-

原创 【併發編程】 --- 僞共享(False Sharing)底層原理及其解決方式

文章目錄1 什麼是僞共享1.1 從疑問說起 --- 難道JMM中不存在局部性原理???1.2 緩存行的概念1.3 僞共享(False Sharing)的概念 + 其可能引發的性能問題2 如何避免僞共享 --- 數據填充2.1

原创 【併發編程】--- 併發編程中的可見性、原子性、有序性問題

文章目錄1 可見性問題1.1 復現可見性問題1.2 可見性問題產生的原因2 原子性問題3 有序性問題3.1 復現有序性問題3.2 有序性問題產生的原因 源碼地址:https://github.com/nieandsun/conc