java面试考点-HashTable/HashMap/ConcurrentHashMap

发布于:2021-10-17 20:35:45

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的一些操作的原子性,这种方式代替了锁,减小了锁的粒度,来增强并发性能

?




转载于:https://www.cnblogs.com/7motor28/p/11241791.html

相关推荐

最新更新

猜你喜欢