欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > ConcurrentHashMap 和 Hashtable 的区别

ConcurrentHashMap 和 Hashtable 的区别

2025/9/14 9:34:55 来源:https://blog.csdn.net/GXSeveryday/article/details/140749664  浏览:    关键词:ConcurrentHashMap 和 Hashtable 的区别

ConcurrentHashMap


概念

  1. ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同
  2. JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链表 实现
  3. JDK1.8 采用的数据结构是数组+链表+红黑二叉树
  4. 在JDK1.7的时候,ConcurrentHashMap(分段锁) 对整个桶数组进行了 分割分段(Segment),每一把锁只锁容器其中一部分数据,多线程访问容器里不同数据段的数据,就不会存在锁 竞争,提高并发访问率
  5. ConcurrentHashMap到了 JDK1.8 的时候已经摒弃了Segment的概念,而是直接用 Node 数组+链表+红黑 树的数据结构来实现,并发控制使用 synchronized 和 CAS 来操作

Hashtable


概念

  1. Hashtable是采用 数组+链表的形式
  2. Hashtable是线程安全的
  3. Hashtable使用 synchronized 来保证线程安全, 效率较低
  4. Hashtable当一个线程访问同步方法时,其他线程也访问同步方法,可能会进入阻塞或轮询状态
  5. Hashtable如使用 put 添加元素,另一个线程不能使用 put 添加元素,也不能使用 get,竞争会越来越激烈效率越低

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词