当前位置:首页 > 科技  > 软件

Java 7与 Java 8中ConcurrentHashMap的实现原理对比分析

来源: 责编: 时间:2023-10-10 18:31:04 166观看
导读ConcurrentHashMap是Java中线程安全的哈希表实现。ConcurrentHashMap的由来:Java 7和Java 8中ConcurrentHashMap的实现原理的简要解析:Java 7中的ConcurrentHashMap实现原理:分段锁(Segment-based Locking)Java 7中的Concu

P2m28资讯网——每日最新资讯28at.com

ConcurrentHashMap是Java中线程安全的哈希表实现。P2m28资讯网——每日最新资讯28at.com

ConcurrentHashMap的由来:P2m28资讯网——每日最新资讯28at.com

P2m28资讯网——每日最新资讯28at.com

P2m28资讯网——每日最新资讯28at.com

Java 7和Java 8中ConcurrentHashMap的实现原理的简要解析:P2m28资讯网——每日最新资讯28at.com

Java 7中的ConcurrentHashMap实现原理:P2m28资讯网——每日最新资讯28at.com

分段锁(Segment-based Locking)

  • Java 7中的ConcurrentHashMap采用分段锁的机制,将整个数据结构分割为多个段(Segment)。
  • 每个段维护一个自己的哈希表,具有自己的锁。
  • 每次对ConcurrentHashMap的操作只需要获取对应段的锁,不会锁住整个数据结构,从而提高并发性能。

HashEntry数组

  • ConcurrentHashMap内部使用HashEntry数组来存储键值对。
  • HashEntry是一个包含键、值和next指针的节点,用于解决哈希冲突。
  • 哈希冲突的解决方法是采用链表法(链表存储相同哈希值的键值对)。

获取锁的方式

  • 在Java 7中,获取锁的方式是通过synchronized关键字来实现的。
  • 每个Segment维护自己的锁,并且对于读操作采用乐观锁机制,对于写操作采用悲观锁机制。

ConcurrentHashMap机构

P2m28资讯网——每日最新资讯28at.com


P2m28资讯网——每日最新资讯28at.com

Java 8中的ConcurrentHashMap实现原理:P2m28资讯网——每日最新资讯28at.com

CAS操作和Synchronized

  • Java 8中的ConcurrentHashMap使用CAS(Compare and Swap)操作来实现并发安全性。
  • 使用CAS操作可以避免锁的竞争和阻塞。
  • Java 8中的ConcurrentHashMap还引入了一种称为"红黑树"的新数据结构,用于优化存储大量键值对的情况。

Node数组和红黑树:

  • Java 8中的ConcurrentHashMap使用了类似HashMap的Node数组来存储键值对。
  • 当某个位置的链表长度超过一定阈值时,会将链表转换为红黑树,以提高查找、插入和删除操作的效率。
  • 红黑树是一种平衡二叉树,具有较快的查找和插入性能。

分段锁的改进:

  • Java 8中的ConcurrentHashMap取消了分段锁机制,采用更细粒度的锁来实现并发控制。
  • ConcurrentHashMap的数据结构被分割成多个独立的部分,每个部分维护自己的锁。
  • 通过细粒度的锁机制,使得读操作可以并发执行,提高了并发性能。

ConcurrentHashMap机构

P2m28资讯网——每日最新资讯28at.com


P2m28资讯网——每日最新资讯28at.com

总结:P2m28资讯网——每日最新资讯28at.com

Java 7中的ConcurrentHashMap:使用了分段锁机制,存储结构为数组+链表,锁的粒度是基于段的,不支持动态扩容。P2m28资讯网——每日最新资讯28at.com

Java 8中的ConcurrentHashMap:使用CAS+Synchronized实现线程安全性,存储结构为数组+链表/红黑树+链表,锁的粒度更细,支持动态扩容,并引入了并发度的概念。P2m28资讯网——每日最新资讯28at.com

这些改进使Java 8的ConcurrentHashMap在并发性能、内存占用和可扩展性方面得到了显著的提升,适用于高并发的多线程环境下的安全哈希表操作。P2m28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12705-0.htmlJava 7与 Java 8中ConcurrentHashMap的实现原理对比分析

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 越来越多开源项目停更,Java 生态受影响最大

下一篇: 十个优秀的编程范式,你已经用过了几个?

标签:
  • 热门焦点
  • 一篇聊聊Go错误封装机制

    一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 让我们一起聊聊文件的操作

    让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人“珍藏”是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 年轻人的“职场羞耻感”,无处不在

    年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • iQOO Neo8系列新品发布会

    iQOO Neo8系列新品发布会

    旗舰双芯 更强更Pro
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 中关村论坛11月25日开幕,15位诺奖级大咖将发表演讲

    中关村论坛11月25日开幕,15位诺奖级大咖将发表演讲

    11月18日,记者从2022中关村论坛新闻发布会上获悉,中关村论坛将于11月25至30日在京举行。本届中关村论坛由科学技术部、国家发展改革委、工业和信息化部、国务
Top