hashmap、hashtable、concurrenthashmap

hashmap

底层:数组+链表,允许key中有一个为null,允许value中有一个或多个为null,线程不安全。
size:初始size=16,扩容之后*2,size一定是2的幂数。

hashtable

底层:数组+链表,不允许key中有null值,允许value中有一个或多个null,线程安全。
线程安全:实现线程安全是锁住整个hashtable,所以效率会很低。
锁机制:锁住整个hash表

concurrenthashmap

底层:分段数组+链表,线程安全
线程安全:实现线程安全是通过锁分离技术,将整个map分为N个Segment,并实现相同的线程安全,相比于hashtable,效率提升默认16倍。对于读操作来说,hashentry的value是volatile的,确保读到的value是最新的值。而有一些方法时需要跨段的,这时需要锁定整个表,此时的是现实按顺序依次锁定所有段,然后再按顺序依次释放所有段。
锁机制:首先将数据分成一段一段,然后分段加锁,当A线程占用了一个锁去访问一段数据时,其他段的数据可以被B、C线程访问。concurrenthashmap默认将hash表分成16个桶,如put、get、remove只是锁住需要占用的桶,即:可以有16个线程同时执行写操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值