当前位置: 首页 > news >正文

HashTable, HashMap 和 ConcurrentHashMap

HashTable, HashMap 和 ConcurrentHashMap 都是 Java 集合框架中的类,用于存储和操作键值对。它们之间存在一些关键区别,如下所示

1.同步性
HashTable:线程安全,所有的方法都是同步的(synchronized),可以在多线程环境下使用。

HashMap:线程不安全,不提供同步保证。如果需要在多线程环境下使用,使用 Collections.synchronizedMap() 或 ConcurrentHashMap。

ConcurrentHashMap:线程安全,采用分段锁机制,允许并发访问。在多线程环境下性能优于 HashTable。

2.空键(null key)和空值(null value)

HashTable:不允许使用空键和空值。

HashMap:允许一个空键和任意数量的空值。

ConcurrentHashMap:不允许使用空键和空值。
遍历时的迭代器:

HashTable:返回的迭代器是 Fail-Safe 的,不会抛出 ConcurrentModificationException。

HashMap:返回的迭代器是 Fail-Fast 的,如果在迭代过程中结构发生变化,会抛出 ConcurrentModificationException。

ConcurrentHashMap:返回的迭代器是 Weakly Consistent 的,不会抛出 ConcurrentModificationException,但可能无法反映最新的修改。

3.性能

HashTable:因为所有方法都是同步的,所以在高并发环境下性能较差。

HashMap:在单线程环境下性能较好,但不适用于多线程环境。

ConcurrentHashMap:通过分段锁机制实现高并发访问,在多线程环境下性能优于 HashTable。

4.继承关系

HashTable:继承自 Dictionary 类,实现了 Map 接口。

HashMap:继承自 AbstractMap 类,实现了 Map 接口。

ConcurrentHashMap:继承自 AbstractMap 类,实现了
ConcurrentMap 和 Serializable 接口。

5.底层实现

HashTable 和 HashMap:都基于哈希表实现。

ConcurrentHashMap:在 Java 8 之前,采用分段锁机制实现;从 Java 8 开始,采用了锁分离技术,结合了哈希表和链表/红黑树。

http://www.lryc.cn/news/55913.html

相关文章:

  • ToBeWritten之IoT 技战法
  • 基于ASP.NET开发的医院手术麻醉信息管理系统源码 项目源码
  • 伪加密超具体破解办法,直击原理底层,细致演示!!!
  • ChatGPT大规模封锁亚洲地区账号
  • 脂肪酸脂质Myristic acid PEG NHS,Myristic-acid PEG NHS ester,肉豆蔻酸PEG活性酯,具有优异疏水性
  • MFC - CFormView类学习1
  • 图像预处理方法
  • 【蓝桥杯C/C++】专题六:动态规划
  • 图的定义和基本术语
  • 041:cesium加载Blue Marble地图
  • 【概念梳理】激活函数
  • 【python】@property 和 @staticmethod
  • Spring题集 - Spring AOP相关面试题总结
  • 分考场
  • BI技巧丨DAX Studio
  • Java 8常用时间 API
  • C++运算符
  • 低/无代码赋能企业,IT与业务的角色正在悄然改变
  • SpringCloud学习2(Spring Cloud Netflix)负载均衡Ribbon、Feign负载均衡、Hystix服务熔断
  • Spring 源码解析 - @Async 注解下的循环依赖问题原理
  • 8个全球性编程比赛,天才程序员的梦想舞台
  • 2023年中国海洋大学计算机及电子信息考研分析
  • 【C++笔试强训】第六天
  • Redission 中的 RedLock 原理实现, springboot 你造吗?
  • 【沐风老师】3dMax一键房屋创建者插件使用方法详解
  • C/C++ 变量详解
  • 新SSD盘安装操作系统启动不了
  • 基于Spring、SpringMVC、MyBatis的病历管理系统
  • QT编程从入门到精通之三十四:“第五章:Qt GUI应用程序设计”之“5.5 Qt Creator使用技巧”
  • 网络工程方向有哪些SCI期刊推荐? - 易智编译EaseEditing