锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 1:减少锁持有时间 例如:对一个方法加锁,不如对方法中需要同步的几行代码加锁; 2:减小锁粒度 例如:ConcurrentHashMap采取对segment加锁而不是整个map加锁,提高并发性; 3:锁分离 根据同步操作的性质,把锁划分为的读 ...
分类:
编程语言 时间:
2017-03-16 20:13:27
阅读次数:
199
概览: 内部存储的数据结构为:数组+链表+红黑树,图示: 重要的属性(内部类): 方法分析 写在最后: 为什么使用红黑树? 红黑树的特性: 1、节点是红色或者黑色 2、根是黑色 3、所有叶子都是黑色 4、每个红色节点必须有2个黑色的子节点 5、从任一节点到其每个叶子的所有简单路径包含相同数目的黑色节 ...
分类:
其他好文 时间:
2017-03-16 19:14:48
阅读次数:
264
线程不安全的HashMap 因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下H ...
分类:
其他好文 时间:
2017-03-12 16:42:05
阅读次数:
203
putIfAbsent 源代码 put源代码 前面一段都是一样的,都是先计算hash再同步取值,区别在于 结果为: null12 结果为: null11 ...
分类:
其他好文 时间:
2017-03-02 12:27:34
阅读次数:
378
一、ConcurrentHashMap出现的原因 我们之前学过HashMap,也知道HashMap不是线程安全的,在多线程环境下,HashMap的put方法有可能引起死循环。于是HashTable这...
分类:
其他好文 时间:
2017-02-23 12:25:17
阅读次数:
213
曾经在 [高并发Java 五] JDK并发包1 中提到过ConcurrentHashMap,只是简单的提到了下ConcurrentHashMap的优点,以及大概的实现原理。 而本文则重点介绍ConcurrentHashMap实现的细节。 HashMap就不介绍了,具体请查看JDK7与JDK8中Has ...
分类:
其他好文 时间:
2017-02-22 20:05:10
阅读次数:
152
HashMap, HashTable, CurrentHashMap的区别 转载:http://www.jianshu.com/p/c00308c32de4 HashMap vs ConcurrentHashMap 引入ConcurrentHashMap是为了在同步集合HashTable之间有更好的 ...
分类:
其他好文 时间:
2017-02-18 15:21:42
阅读次数:
836
前面文章提到Collections.synchronizedMap()与ConcurrentHashM两者都提供了线程同步的功能。那两者的区别在哪呢?我们们先来看到代码例子。 下面代码实现一个线程对map进行写操作,另一个线程,读出并打印map数据。 [java] view plain copy p ...
分类:
其他好文 时间:
2017-02-17 23:52:43
阅读次数:
400
HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable 线程安全,但 ...
分类:
其他好文 时间:
2017-02-17 23:43:34
阅读次数:
499
ConcurrentMap接口下有两个重要的实现: ConcurrentHashMap ConcurrentSkipListMap(支持并发排序功能,弥补ConcurrentHashMap) ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的H ...
分类:
其他好文 时间:
2017-02-16 13:58:14
阅读次数:
201