今天我们介绍一下ConcurrentHashMap在JDK1.8中的实现。基本结构 ConcurrentHashMap在1.8中的实现,相比于1.7的版本基本上全部都变掉了。首先,取消了Segment分段锁的数据结构,取而代之的是数组+链表(红黑树)的结构。而对于锁的粒度,调整为对每个数组元素加锁( ...
分类:
其他好文 时间:
2018-05-22 15:08:18
阅读次数:
221
Tomcat中一个会话对应一个session,其实现类是StandardSession,查看源码,可以找到一个attributes成员属性,即存储session的数据结构,为ConcurrentHashMap,支持高并发的HashMap实现; 那么,tomcat中多个会话对应的session是由谁来 ...
分类:
其他好文 时间:
2018-05-21 14:34:31
阅读次数:
163
前言 每一次总结都意味着重新开始,同时也是为了更好的开始。ConcurrentHashMap 一直是我心中的痛。虽然不敢说完全读懂了,但也看了几个重要的方法,有不少我觉得比较重要的知识点。 然后呢,放一些楼主写的关于 ConcurrentHashMap 相关源码分析的文章链接: 1. "Concur ...
分类:
其他好文 时间:
2018-05-19 23:52:55
阅读次数:
364
前言 这是一篇对 transfer 方法的拾遗,关于之前那篇文章的一些一笔带过,或者当时不知道的地方进行回顾。 疑点 1. 为什么将链表拆成两份的时候,0 在低位,1 在高位? 回顾一下 transfer 的相关代码: 关键看上面注释的代码,如果 runBit 是 0,那么就设置在低位节点,反之,如 ...
分类:
其他好文 时间:
2018-05-19 23:50:54
阅读次数:
320
前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount 方法,该方法会在 putVal 方法中调用。 该方法可以配合 size 方法一起查看,关于该方法,楼主也写了一篇文章分析过: ...
分类:
其他好文 时间:
2018-05-19 23:50:21
阅读次数:
698
一、个人学习后的见解: 首先表明学习源码后的个人见解,后续一次依次进行分析: 1、线程安全:HashMap是非线程安全的,HashTable是线程安全的(HashTable中使用了synchronized关键字进行控制),HashMap对应的线程安全的有concurrentHashMap,但如果不用 ...
分类:
其他好文 时间:
2018-05-19 13:09:34
阅读次数:
202
写的很好,转 1. Java集合 ConcurrentHashMap原理分析 http://www.cnblogs.com/ITtangtang/p/3948786.html 2. ConcurrentHashMap(JDK1.8)为什么要放弃Segment https://blog.csdn.ne ...
分类:
编程语言 时间:
2018-05-11 20:14:36
阅读次数:
160
基于Java1.7的 HashMap原理 1.基于哈希原理,存储key-value键值对(Entry)的集合。在JDK1.8以前数据结构是一个数组+链表,在JDK1.8以后是一个数组+链表+红黑树。(key,value,hash,next) 2.put方法原理:1)通过哈希函数计算key,得到哈希值 ...
分类:
其他好文 时间:
2018-05-11 14:34:40
阅读次数:
153
1. junit用法,before,beforeClass,after, afterClass的执行顺序2. 分布式锁3. nginx的请求转发算法,如何配置根据权重转发4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)5. 线程的状态5. 线程的 ...
分类:
其他好文 时间:
2018-05-10 01:07:42
阅读次数:
310
如何线程安全的使用HashMap 发布时间:2017-06-10 23:03:31 如何线程安全的使用HashMap 那现在看看如何线程安全的使用HashMap。有就是以下三种方式: Hashtable java.util.concurrent.ConcurrentHashMap Collectio ...
分类:
其他好文 时间:
2018-05-09 17:59:05
阅读次数:
147