首页 > 编程语言 > 详细

java面试考点-HashTable/HashMap/ConcurrentHashMap

时间:2019-07-25 09:24:09      阅读:107      评论:0      收藏:0      [点我收藏+]

HashTable

  • 内部数据结构是数组+链表,键值对不允许为null,线程安全,但是锁是整表锁,性能较差/效率低

HashMap

  • 结构同HashTable,键值对允许为null,线程不安全,
  • 默认初始大小为16(固定为2的幂次方),
  • 默认扩容阀值为0.75,扩容方式为,先插入再扩容,所以会产生无效扩容,
  • 单个链表长度默认为8,当超过时链表自动转为红黑树结构,当树结构长度小于6时,重新转为链表

ConcurrentHashMap

  • jdk1.5之后对HashTable的升级版,性能效率各方面都有巨大的提升,
  • 在1.5-1.7版本中使用segment作为分割单元,操作过程中会锁住segment,默认初始为16个segment,采用的是可重入锁ReentrantLock
  • 在1.8之后放弃segment,采用与HashMap相同的数据结构,Node,采用CAS机制类似乐观锁,使用3个CAS操作来确保node的一些操作的原子性,这种方式代替了锁,减小了锁的粒度,来增强并发性能

 

java面试考点-HashTable/HashMap/ConcurrentHashMap

原文:https://www.cnblogs.com/7motor28/p/11241791.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!