原创 Java高併發21-AQS在共享,獨佔場景下的源碼介紹

一、AQS--鎖的底層支持 1.AQS是什麼 AQS是AbstractQueuedSychronizer的簡稱,即抽象同步隊列的簡稱,這是實現同步器的重要組件,是一個抽象類,雖然在實際工作中很燒用到它,但是瞭解它的內部原理是很有必要的,並

原创 Java高併發20-併發包中鎖原理解析(二)

一、例子 下面來一個例子加深對park和unpark的理解 package com.ruigege.LockSourceAnalysis6;import java.util.concurrent.locks.LockSupport;pub

原创 Java高併發19-併發包中鎖原理解析(一)

一、LockSupport工具類 1.該類的主要作用 掛起和喚醒線程,該工具類是創建鎖和其他同步類的基礎。LockSupport類與每個使用它的線程都會關聯一個許可證,默認情況下調用LockSupport類的方法的線程是不持有許可證的。L

原创 Java高併發18-併發列表CopyOnWriteArrayList源碼解析

一、CopyOnWriteArrayList 概覽:該List是一個JUC包中的唯一併發List,它是線程安全的,底層是一個數組,我們所有的操作都是使用了寫時複製的策略,下面這張圖片就是該類的一個類圖 1.類圖基本解釋 有一個獨佔鎖R

原创 Java高併發17-LongAccumulator類詳解

一、LongAccumulator類 1.和LongAdder之間的關係 LongAdder類是LongAccumulator的一個特例,我們看一下LongAccumulator的一個構造方法  public LongAccumlator

原创 Java高併發16-LongAdder類源碼解析(下)

一、複習 上次連載簡單的介紹了其他函數的作用以及功能 二、完整的LongAdder類源碼 package com.ruigege.AtomicOperationClass4;import java.util.function.LongBi

原创 Java高併發16-LongAdder類源碼解析(上)

一、複習 AtomicLong類 二、LongAdder源碼分析 1.繼承與實現關係 LongAdder類繼承自Striped64這個類,同時實現了Serializable接口 abtract class Strped64{    tr

原创 Java高併發14-多線程下ThreadLcoalRandom源碼解析以及對比

一、複習 公平鎖,非公平鎖,可重入鎖,自旋鎖,獨佔鎖和共享鎖 二、Java併發包中的ThreadLocalRandom類 1.起源以及優點 ThreadLocalRandom類是在JDK7的JUC包開始新增的類,彌補了Random類在高

原创 Java高併發15-AtomicLong等原子類源碼解析

一、複習 Random類以及ThreadLocalRandom類源碼解析 二、Java併發包中一些原子操作類的源碼解析 1.常見類 例如AtomicLong,AtomicInteger,AtomicCharacter.....等這些操作

原创 如何做一個自動化感應垃圾桶

簡介 「上面的視頻就是製作成型的感應式垃圾桶,手靠近感應器的時候,就可以自動開蓋大概一秒,自動再蓋上,它的用處可大了,比如:用來喝水,用來泡麪或者用來當筆筒,總之垃圾桶能幹的事情,它一樣都幹不了??????」「來合個影」 緣起 「哈哈

原创 Java高併發13-公平鎖與非公平鎖、自旋鎖、可重入鎖

一、複習 僞共享原理以及如何避免樂觀鎖和悲觀鎖 二、公平鎖與非公平鎖 按照線程請求並獲得鎖的時間順序,可以將鎖分爲公平鎖和非公平鎖公平鎖:線程獲取鎖的順序是按照線程請求鎖的時間早晚來進行劃分的,也就是滿足先到先得的原則;非公平鎖:線程在

原创 Java高併發12-避免僞共享和鎖機制

一、複習 二、如何避免僞共享 在JDK8之前是使用填充字節的方式來避免僞共享的,我們最終的目的其實就是希望單個變量能夠獨佔一個緩存行。我們舉一個類的例子 package com.ruigege.OtherFoundationOfConcu

原创 Java高併發11-僞共享,getUnsafe源碼解析並利用反射獲取Unsafe實例

一、複習 public native long getLongvolatile(Object obj,long offset)public native long putLongvolatile(Object obj,long offse

原创 Java高併發10-Unsafe類中其他方法以及測試

一、複習 synchronized和volatile的不同點,相同點volatile不能保證原子性,只能保證內存可見性volatile在什麼情況下可以使用(兩種情況)ABA問題定義,產生原因以及消除方法Java中的CAS操作unsafe類

原创 Java高併發9-CAS操作與Unsafe類詳解

一、複習 計算機內存模型,synchronized和volatile關鍵字簡介 二、兩者對比 sychronized和volatile都解決了內存可見性問題不同點:(1)前者是獨佔鎖,並且存在者上下文切換的開銷以及線程重新調度的開銷;後