CHM 源码阅读(jdk1.7)
ConcurrentHashMap 是线程安全的 Map。
什么叫线程安全呢?就是多线程同时处理时,你所写的代码按照你所想的方式运行。
比如你有一个变量,你想用 100 个线程去对它分别加 1000 次。我们以为的结果是 100000,但一般情况,结果不是。比如你用很多线程去对一个链表进行操作,但有时链表的行为和你想的不一致。
首先了解 chm 的基本结构。

它由两部分组成。一部分是 Segment 一部分是 table(它是用来存储 key-value 的真实结构)
put 方法
复制代码
1.首先拿到所在的 Segment,然后调用 segment.put 方法。
复制代码
2.segment 的 put 方法。
它首先尝试拿锁。如果拿到了锁,就直接进行下面的操作。

评论