1、HashMap和HashTable的区别
- 区别
- ①、HashMap是非线程安全的,HashTable是线程安全的
- ②、HshMap的键和值都允许 null 值存在,而HashTable则不行
- ③、因为线程安全问题,HashMap效率比HashTable要高
- ④、HashTable是同步的,而HashMap不是;因此,HashMap更适合单线程环境,HashTable适合多线程环境
- 不过现在不建议用HashTable,一方面是HashTable是遗留类,内部的实现很多没有优化和冗余,另一个方面是,即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable
2、补充:HashTable和ConcurrentHashMap的区别
- HashTable使用的是
Synchronized
关键字修饰,ConcurrentHashMap是JDK1.7使用了锁分段技术来保证线程安全;JDK1.8ConcurrentHashMap取消了Segment
分段锁,采用了CAS和sychronized
来保证并发安全
- ConcurrentHashMap数据结构跟HashMap1.8的结构类似,数组 + 链表/红黑二叉树
synchronized
只锁定当前链表或红黑树二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍
posted @
2022-08-02 13:56
OnlyOnYourself-Lzw
阅读(
32)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?