HashTable 底层数组+链表实现,无论key还是value都 不能为null ,线程 安全 ,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为 11 ,扩容:newsize = olesize 2+1 计算ind ...
分类:
其他好文 时间:
2019-06-29 01:00:29
阅读次数:
107
1. Java7中的HashMap: 大方向上HashMap是一个数组,每个数组元素是一个单向链表。 上图中每个绿色的实体是嵌套类Entry的实例,Entry包含4个属性:key,value,hash,和单链表的next。 capacity:数组的容量,始终保持在2^n,每次扩容后大小为扩容前的2倍 ...
分类:
编程语言 时间:
2019-06-28 00:32:03
阅读次数:
120
ConcurrentHashMap类和方法分析~~~~~~~~~~~~
分类:
编程语言 时间:
2019-06-25 20:54:32
阅读次数:
164
ConcurrentHashMap原理和源码分析~~~~~~~~~~~~~~~~~~~~~
分类:
编程语言 时间:
2019-06-24 19:41:41
阅读次数:
133
前面前已经说明了HashMap以及红黑树的一些基本知识,对JDK8的HashMap也有了一定的了解,本篇就开始看看并发包下的ConcurrentHashMap,说实话,还是比较复杂的,笔者在这里也不会过多深入,源码层次上了解一些主要流程即可,清楚多线程环境下整个Map的运作过程就算是很大进步了,更细... ...
分类:
其他好文 时间:
2019-06-23 17:29:37
阅读次数:
77
特点 线程不安全 HashMap、和Hashtable、SynchronizedMap区别: HashMap 线程不安全,可以有null的key值或value值。 hashtable 线程安全,不能有null的key值或value值。 ConcurrentHashMap 线程安全,不能有null的k ...
分类:
编程语言 时间:
2019-06-22 19:51:03
阅读次数:
109
1.首先做一个测试:i++。输出结果为10,因为在底层实现的时候会引入一个临时变量具体为: 所以i++就是一个非原子性操作,采用多线程再次测试:测试结果中会因为i++的非原子性操作带来读写不一致问题。比如:1,3,2,2,4,5,6,7,8,9序列的出现。两个2的出现就说明了,两个线程在同时从主存中 ...
分类:
编程语言 时间:
2019-06-17 17:34:18
阅读次数:
140
原文出处: "JavaDoop" 阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Java7 HashMap Java7 ConcurrentHashMap Java8 HashMap Java8 ConcurrentHashMap 顺序进行阅读,可适当降低阅读门槛。 阅读前提:本文分析的是 ...
分类:
编程语言 时间:
2019-06-12 19:47:26
阅读次数:
106
特点: 速度更快(HashMap加哈希表,ConcurrentHashMap使用CAS,内存结构无永久区、新增元数据区使用物理内存)代码更少(增加了新的语法 Lambda 表达式)强大的 Stream API便于并行(优化ForkJoin)//JDK8之前 需要自己实现计算过程,下面的省略部分代码p ...
分类:
编程语言 时间:
2019-06-09 09:31:56
阅读次数:
129