Java7和Java8中的ConcurrentHashMap原理解析
put 过程分析我们先看 put 的主流程,对于其中的一些关键细节操作,后面会进行详细介绍。第一层皮很简单,根据 hash 值很快就能找到相应的 Segment,之后就是 Segment 内部的 put 操作了。不过 Doug Lea 也说了,根据统计,如果使用默认的阈值,大约只有 1/6 的节点需要克隆。get 过程分析相对于 put 来说,get 真的不要太简单。remove 操作的线程安全性remove 操作我们没有分析源码,所以这里说的读者感兴趣的话还是需要到源码中去求实一下的。get 操作需要遍历链表,但是 remove 操作会"破坏"链表。如果 remove 先破坏了一个节点,分两种情况考虑。
用户评论