Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

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


分享到:
时间:2020-11-27 20:01来源:http://www.java1234.com 作者:小锋  侵权举报
ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) PDF 下载
失效链接处理
ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) PDF 下载

本站整理下载:
 
相关截图:


主要内容:

哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查 找的值即 key,即可查找到其对应的值。 哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数 组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。 这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。 2.链式哈希表 链式哈希表从根本上说是由一组链表构成。每个链表都可以看做是一个“桶”, 我们将所有的元素通过散列的方式放到具体的不同的桶中。插入元素时,首先将 其键传入一个哈希函数(该过程称为哈希键),函数通过散列的方式告知元素属 于哪个“桶”,然后在相应的链表头插入元素。查找或删除元素时,用同们的方 式先找到元素的“桶”,然后遍历相应的链表,直到发现我们想要的元素。因为 每个“桶”都是一个链表,所以链式哈希表并不限制包含元素的个数。然而,如 果表变得太大,它的性能将会降低。
3.应用场景 我们熟知的缓存技术(比如 redis、memcached)的核心其实就是在内存中维 护一张巨大的哈希表,还有大家熟知的 HashMap、CurrentHashMap 等的应 用。 ConcurrentHashMap 与 HashMap 等的区别 1.HashMap 我们知道 HashMap 是线程不安全的,在多线程环境下,使用 Hashmap 进行 put 操作会引起死循环,导致 CPU 利用率接近 100%,所以在并发情况下不能 使用 HashMap。
2.HashTable HashTable 和 HashMap 的实现原理几乎一样,差别无非是  HashTable 不允许 key 和 value 为 null  HashTable 是线程安全的 但是 HashTable 线程安全的策略实现代价却太大了,简单粗暴,get/put 所有 相关操作都是 synchronized 的,这相当于给整个哈希表加了一把大锁。 多线程访问时候,只要有一个线程访问或操作该对象,那其他线程只能阻塞,相 当于将所有的操作串行化,在竞争激烈的并发场景中性能就会非常差。
 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐