ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

本文详细介绍了ConcurrentHashMap在JDK1.7和JDK1.8的实现原理。JDK1.7采用Segment分段锁,JDK1.8则采用数组+链表+红黑树结构,通过CAS+Synchronized确保线程安全,当链表长度超过8时,链表转为红黑树,提高查询效率。
摘要由CSDN通过智能技术生成

内容目录:

1.哈希表
2.ConcurrentHashMap与HashMap、HashTable的区别
3.CurrentHashMap在JDK1.7和JDK1.8版本的区别
在这里插入图片描述
哈希表

1.介绍

哈希表就是一种以键-值(key-indexed) 存储数据的结构,我们只要输入待查找的键即key,即可查找到其对应的值。

哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。

2.链式哈希表

链式哈希表从根本上说是由一组链表构成。每个链表都可以看做是一个“桶”,我们将所有的元素通过散列的方式放到具体的不同的桶中。
插入元素时,首先将其键传入一个哈希函数(该过程称为哈希键),函数通过散列的方式告知元素属于哪个“桶”,然后在相应的链表头插入元素。查找或删除元素时,用同样的方式先找到元素的“桶”,然后遍历相应的链表,直到发现我们想要的元素。因为每个“桶”都是一个链表,所以链式哈希表并不限制包含元素的个数。然而,如果表变得太大,它的性能将会降低。
在这里插入图片描述
3.应用场景

我们熟知的缓存技术(比如redis、memcache

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值