写点什么

CHM 源码阅读(jdk1.7)

用户头像
周周
关注
发布于: 3 小时前

ConcurrentHashMap 是线程安全的 Map。

什么叫线程安全呢?就是多线程同时处理时,你所写的代码按照你所想的方式运行。

比如你有一个变量,你想用 100 个线程去对它分别加 1000 次。我们以为的结果是 100000,但一般情况,结果不是。比如你用很多线程去对一个链表进行操作,但有时链表的行为和你想的不一致。


首先了解 chm 的基本结构。


它由两部分组成。一部分是 Segment 一部分是 table(它是用来存储 key-value 的真实结构)

put 方法

HashEntry<K,V> node = tryLock() ? null :                scanAndLockForPut(key, hash, value);
复制代码


1.首先拿到所在的 Segment,然后调用 segment.put 方法。

一个segment就是可重入的锁。
复制代码

2.segment 的 put 方法。

它首先尝试拿锁。如果拿到了锁,就直接进行下面的操作。



用户头像

周周

关注

Java开发一枚 2020.02.22 加入

还未添加个人简介

评论

发布
暂无评论
CHM源码阅读(jdk1.7)