java中ConcurrentHashMap和HashTable的简介说明

立山  金牌会员 | 2022-8-31 17:49:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 693|帖子 693|积分 2079

转自:
http://www.java265.com/JavaCourse/202204/2950.html
ConcurrentHashmap:
乐观锁+Sysnchronized
多线程并发向同一个散列桶添加元素时若散列桶为空,则触发乐观锁机制,线程获取"散列桶"中的版本号,在添加元素之前判断线程中的版本号与桶中的版本号是否一致
致,添加成功不一致,自旋若散列桶不为空,,则使用synchroinized.先访问到的线程给头结点解
锁,形成链表或"红黑树",JDK1.8中ConcrruentHashMap在保证线程安全的同时允许最大程序的多线程并发执行
下文笔者讲述ConcurrentHashMap和HashTable的不同之处,如下所示:
  1. ConcurrentHashMap使用多个存储桶来存储数据
  2.   使用这种方式可避免读取锁定
  3.   其性能比HashTable优秀
  4. HashTable则是使用一个简单的同步锁进行每次的读写
  5.   
  6. <strong>注意事项:
  7.    1.ConcurrentHashMap和HashTable都是线程安全的
  8.    2.单线程下,笔者建议使用HashMap这个容器</strong>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表