跳至正文
Line's Blog
Line's Blog
  • 首页
  • 关于
  • 归档
  • 相册
  • 首页
  • 关于
  • 归档
  • 相册
关

搜索

  • https://www.facebook.com/
  • https://twitter.com/
  • https://t.me/
  • https://www.instagram.com/
  • https://youtube.com/
Subscribe
Java

004-ConcurrentHashMap 和 Hashtable 的区别?

头像
作者 Line
2026年5月31日 1 分钟阅读
0

两者都是线程安全的哈希表,但锁机制完全不同,这直接导致了性能上的巨大差距。Hashtable是JDK1.0的老古董,所有方法都加了synchronized,相当于给整张表上了一把大锁。10个线程同时来访问,9个得排队等着,并发度就是1。

ConcurentHashMap在JDK 8里采用CAS+synchronized 配合的细粒度锁。往空桶里插数据用CAS无锁写入,有冲突时才用synchronized锁住单个桶的头节点。一张表默认16个桶,理论上16个线程可以同时写不同的桶,互不干扰。

头像
作者

Line

关注我
其他文章
上一个

003-HashMap的扩容机制

下一个

005-为什么ConcurrentHashMap 不支持 key 或 value 为 null?

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

近期文章

  • 公寓租赁平台
  • 001-Spring Boot是如何实现自动配置的?
  • 005-MySQL 并发事务中会出现的三大问题
  • 004-MySQLInnoDB引擎中的聚簇索引和非聚簇索引有什么区别?
  • 003-MySQL索引的最左前缀匹配原则

归档

  • 2026 年 6 月
  • 2026 年 5 月

分类

  • Java
  • Linux
  • MySQL
  • Spring Boot
  • 生活
  • 项目

网站信息

  • 0
  • 3
  • 1
  • 101
  • 3
Copyright © 2026 Line - Powered by WordPress
粤ICP备2026067359号