【Java】ConcurrentHashMap執行緒安全技巧

tlonge發表於2020-12-08

執行緒安全主要有幾個方面:
1、初始化資料;
2、put資料;
3、get資料;
4、擴容;
5、統計容器大小

1、資料結構上Node裡面的value和next都是volatile,transient volatile Node<K,V>[] table,保證執行緒間資料的可見性;
2、讀取某一個節點用的是U.getObjectVolatile(),保證資料最新;
3、減小了鎖的顆粒度,對連結串列頭進行加鎖;
4、用到了ForwardingNode標識位,實現了get的執行緒安全;
5、對Node中的hash值,當開始擴容,複製MODED=-1;
6、大量的採用了CAS的方式進行資料的寫操作;
7、統計容器大小的設計,baseCount的CAS寫+分而治之桶計數+桶的擴容;

相關文章