ConcurrentHashMap隨意分析
參考博文
https://www.jianshu.com/p/865c813f2726
繼承關係
繼承了AbstractMap抽象類和ConcurrentMap介面
資料結構
1.7:Segment陣列(每個Segement由陣列和連結串列組成(實際上一個Segement就是一個table陣列,table陣列裡有多個HashBucket,每個HashBucket由一個HashEntry組成 ),Segement是一種可重入鎖ReentrantLock,即分段鎖)。
1.8:拋棄使用Segement,table,由陣列和連結串列和紅黑樹組成,使用CAS和Synchronized關鍵字保證併發的安全。
執行緒安全性
執行緒安全的
JDK1.7裡容器有多把鎖,每一把鎖鎖一段資料(segement陣列,加上HashEntry單向佇列table)
JDK1.8版本:
①取消segments欄位,直接採用transient volatile HashEntry<K,V>[] table儲存資料,採用table陣列元素作為鎖,從而實現了對每一行資料進行加鎖,併發控制使用Synchronized和CAS來操作
將原先table陣列+單向連結串列的資料結構,變更為table陣列+單向連結串列+紅黑樹的結構.
引數
預設容量:16(2的整數倍)
負載因子:0.75
樹化閾值:8
鏈化閾值:6
最小樹化容量:64(指的是table的容量)
容器:Node陣列型別的table
元素存在
不允許空鍵或者空值
相關文章
- ConcurrentHashMap 原始碼分析HashMap原始碼
- 隨意搞搞
- 隨意寫寫
- ConcurrentHashMap原始碼分析-JDK18HashMap原始碼JDK
- ConcurrentHashMap 實現原理和原始碼分析HashMap原始碼
- hashmap和concurrenthashmap原始碼分析(1.7/1.8)HashMap原始碼
- 工作隨意總結20240830
- 原始碼分析–ConcurrentHashMap與HashTable(JDK1.8)原始碼HashMapJDK
- 死磕 java集合之ConcurrentHashMap原始碼分析(一)JavaHashMap原始碼
- 併發程式設計 —— ConcurrentHashMap size 方法原理分析程式設計HashMap
- ConcurrentHashMap 原始碼分析03之內部類ReduceTaskHashMap原始碼
- ConcurrentHashMapHashMap
- ConcurrentHashMap執行緒安全機制以及原始碼分析HashMap執行緒原始碼
- 【.NET】利用 IL 魔法實現隨心隨意的泛型約束泛型
- 併發程式設計——ConcurrentHashMap#transfer() 擴容逐行分析程式設計HashMap
- 多執行緒十二之ConcurrentHashMap1.8實現分析執行緒HashMap
- 2024.4.17 需求分析創意
- 請隨意選擇點評哪篇文章
- 併發程式設計之 ConcurrentHashMap(JDK 1.8) putVal 原始碼分析程式設計HashMapJDK原始碼
- 還不懂 ConcurrentHashMap ?這份原始碼分析瞭解一下HashMap原始碼
- 從原始碼分析ConcurrentHashMap執行緒安全和高效的特性原始碼HashMap執行緒
- 圖解ConcurrentHashMap圖解HashMap
- 拿捏了!ConcurrentHashMap!HashMap
- concurrentHashMap詳解HashMap
- ConcurrentHashMap 與HashTableHashMap
- concurrentHashMap特點HashMap
- 垃圾收集分析的意義
- 什麼是ConcurrentHashMap?不同JDK下ConcurrentHashMap的區別?HashMapJDK
- 伴隨症狀 伴隨因素 迴歸分析 相關係數 多元分析
- 死磕 java集合之ConcurrentHashMap原始碼分析(二)——擴容全解析JavaHashMap原始碼
- 死磕 java集合之ConcurrentHashMap原始碼分析(一)——插入元素全解析JavaHashMap原始碼
- 自定義按鈕 圖片標題位置隨意放置
- 隨意的一點東西,還是期望被人看到
- 樹套樹 做題時隨意記一些
- linux ddos惡意軟體分析Linux
- 惡意軟體Linux/Mumblehard分析Linux
- 有米iOS惡意SDK分析iOS
- Zero Access惡意軟體分析