大致思路是用一个单例的Map实现,当然此Map得是线程安全的--ConcurrentHashMap 原本项目需求是缓存十条消息,所以打算用Map实现缓存机制。中途夭折下面具体尚未实现。。。 当然此代码仞为半成品,具体得根据项目需求采用不同的原则清除缓存 ...
分类:
其他好文 时间:
2017-03-19 15:55:56
阅读次数:
182
ConcurrentHashMap源码分析,参考:http://blog.csdn.net/do_smile/article/details/46911727 HashMap源码分析,参考:http://blog.csdn.net/ghsau/article/details/16843543/ , ... ...
分类:
编程语言 时间:
2017-03-19 01:51:50
阅读次数:
170
锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 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