news 2026/7/2 10:39:07

ConcurrentHashMap 和 HashMap的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ConcurrentHashMap 和 HashMap的区别

面试口述版

  1. 线程安全性:HashMap线程不安全,并发put会出现数据覆盖,JDK7扩容会形成环形链表造成死循环;ConcurrentHashMap是线程安全的,适用于多线程场景。
  2. 锁机制:
    JDK8:HashMap无锁;ConcurrentHashMap采用CAS+synchronized锁住链表头节点,锁粒度细。
    JDK7:ConcurrentHashMap使用Segment分段锁。
  3. Null值:HashMap允许一个key为null,value可以多个null;ConcurrentHashMap key、value都不允许为null,并发场景无法区分值为空还是键不存在。
  4. 迭代器:HashMap迭代器是fail‑fast,并发修改直接抛出ConcurrentModificationException;ConcurrentHashMap是弱一致性,遍历期间新增数据不会报错。
  5. 扩容:HashMap仅单线程扩容;ConcurrentHashMap支持并发扩容,其他线程可以协助迁移数据,效率更高。
  6. 性能:单线程下HashMap更快,没有CAS和锁的开销;多线程环境必须使用ConcurrentHashMap。

精简版(直接背)

HashMap线程不安全,允许key、value存null,单线程扩容,迭代器快速失败。
ConcurrentHashMap线程安全,JDK8使用CAS+synchronized,不允许存null,支持并发扩容,迭代器弱一致,用于多线程环境。

表格版(复盘记忆)

对比项HashMapConcurrentHashMap
线程安全不安全安全
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 10:37:43

如何免费解锁Windows多人远程桌面:RDP Wrapper Library终极指南

如何免费解锁Windows多人远程桌面:RDP Wrapper Library终极指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 想要让Windows家庭版也能支持多人同时远程连接吗?RDP Wrapper Library正是解…

作者头像 李华
网站建设 2026/7/2 10:35:47

骨聆小飞豆:刷新认知,重新定义运动骨传导耳机

如今耳机市场竞争愈发激烈,入耳式耳机不再是主流选择。最近试了这款EO骨聆ProfitX T90,用实打实的产品力向我证明了:运动耳机领域的下一个风向标,可能就藏在毫厘之间。很长一段时间里我也是入耳式耳机的忠实用户,尤其在…

作者头像 李华