ConcurrentHashMap原始碼分析

2021-09-24 22:45:45 字數 835 閱讀 7822

concurrenthashmap原始碼分析
concurrenthashmap是乙個執行緒安全的、高可用hashmp;本部落格基於jdk1.8concurrenthash實現原理進行分析,如有不對,敬請斧

正。。。

(1)資料結構知識點		 

(1)hash演算法;

(2)鍊錶;

(3)陣列;

(4)二叉樹(紅黑二叉樹);

(2)多執行緒知識點

(1)鎖的應用(cas);

(2)volitate;

(3)大神的思想

(1)put(主要講解)

(2)get

(1)當不存在hash衝突時,為保證執行緒,則只需要保證元素的可見性即可(原因參加jvm虛擬機器模型),保證元素的讀寫可見性;

(2)當存在hash衝突時,為保證執行緒安全,不僅僅要保證元素的可見性,還要保證多個執行緒對同乙個節點操作的順序性;

(3)擴容是個費時費力的過程,但是大神通過多執行緒進行擴容和元素拷貝,極大的提高了效率;

(4)hash衝突問題,當在節點超過乙個閾值則將鍊錶轉變為紅黑樹,極大提高了檢索效率,將查詢速度提高到了o(logn);

(5)本類的設計均才用unsafe樂觀鎖實現,對變數寫操作;

(1)擴容問題效率已解決;

(2)對於沒有衝突的節點,執行緒安全、效率已經解決;

(3)對於hash衝突點,目前元素少才用鍊錶,當元素較多才用紅黑二叉樹,優化讀寫,對於該操作仍存在優化的點,後期可對該出進行優化操作,提公升效率。。。

後面想到優化點在做補充。。。

ConcurrentHashMap原始碼分析

hashmap 先說hashmap,hashmap是執行緒不安全 的,在併發環境下,可能會形成環狀鍊錶 hashtable hashtable和hashmap的實現原理幾乎一樣,差別無非是1.hashtable不允許key和value為null 2.hashtable是執行緒安全的。但是hashta...

ConcurrentHashMap原始碼詳解

成員變數private static final int maximum capacity 1 30 private static final int default capacity 16 static final int max array size integer.max value 8 pr...

concurrentHashMap原始碼分析

concurrenthashmap是hashmap的執行緒安全版本,內部也是使用 陣列 鍊錶 紅黑樹 的結構來儲存元素。相比於同樣執行緒安全的hashtable來說,效率等各方面都有極大地提高。在這裡可以使用上篇那個 進行測試,根據結果可以知道concurrenthashmap是執行緒安全的,由於分...