ConcurrentHashMap 在Java7和Java8中的区别

Java7中ConcurrentHashMap使用的就是锁分段技术,ConcurrentHashMap由多个Segment组成(Segment下包含很多Node,也就是我们的键值对了),每个Segment都有把锁来实现线程安全,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。

Java8中的锁的粒度比Java7中更细了,Java8锁住的一个某一个数组元素table[i](头节点,该头结点类型是链表头结点或红黑树的头结点),而Java7中segment锁住的是一个HashEntry数组,相当于锁住了多个数组元素;所以我感觉Java8中ConcurrentHashMap多线程环境下 put效率更高。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容