开发者社区> 问答> 正文

[@talishboy][¥20]HashMap,HashTable,ConcurrentHashMap的原理与区别?

问题来自Java技术沙龙的尚小琦
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
李博 bluemind 2018-12-07 14:52:29 1905 0
1 条回答
写回答
取消 提交回答
  • 孔祥坤 职位:阿里妈妈应用平台技术专家 擅长问题:分布式应用系统架构、Java核心技术以及开源framework等 经历:10年左右Java应用系统研发及架构设计经验,曾主导和参与多个重要广告应用系统的研发设计,目前在阿里妈妈从事广告投放中台的研发工作。

    1)HashTable是线程安全的,其提供的public方法上都加了synchronized关键字,效率是比较低的;
    2)HashMap是非线程安全的,多线程操作会导致并发冲突异常,单线程场景高效;
    3)ConcurrentHashMap是线程安全的,与HashTable的实现机制不同,并没有通过加synchronized关键字的方式实现同步锁,在java8之前它是通过分段(segment)锁的方式来实现的,降低并发冲突,但是在java8中实现方式上有所调整,采取按行加锁,进一步降低并发冲突概率,具体可以参考jdk8源码实现

    2019-07-17 23:18:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载