一、概述
以前学习的时候应该都知道HashMap以及Hashtable:
HashMap是线程不安全的,Hashtable是线程安全的。
这里就一源代码的角度看看为什么Hashtable是线程安全的,以及另外一个线程安全的ConcurrentHashMap与Hashtable的比较。
小提示:在Ecilpse中可以用ctrl+shitf+T查找类,这样就容易查看源代码了。...
分类:
其他好文 时间:
2015-08-26 01:56:20
阅读次数:
124
ConcurrentHashMap使用了锁分离技术, 使用了多个锁来控制对hash表的不同部分进行的修改。使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。 有些方法需要跨段,比如size....
分类:
编程语言 时间:
2015-08-18 01:03:22
阅读次数:
127
1. 数据结构都是数组+拉链实现的哈希表,但是具体实现上差别大了2. 并发Hashtable全表锁HashMap多线程不安全,需要自己封装ConcurrentHashMap加细粒度锁,读不加锁,如果读到空值再加锁。注意这三个关键字final,transient,volatile3. nullHash...
分类:
编程语言 时间:
2015-08-18 00:56:45
阅读次数:
183
转载自http://blog.csdn.net/liuzhengkang/article/details/2916620集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(Hash...
分类:
其他好文 时间:
2015-08-17 18:55:03
阅读次数:
67
概述:
ConcurrentHashMap是HashMap的升级版,我们都知道HashMap是不可靠的,线程不安全的,而Hashtable在同步的时候又会将整张表都锁住,从而在多并发的情况下效率低下。于是ConcurrentHashMap出现了,综合了两者的优点,所以一直是高并发情况下开发者的首选,但是相对的,它也有自身的一些不足,我们来分析一下它的原理。
ConcurrentHash...
分类:
其他好文 时间:
2015-08-14 22:48:47
阅读次数:
173
为了分析ConcurrentHashMap,决定先分析一下Hashtable,两者都是线程安全的,必然会有不同的区别,Hashtable和HashMap也有很大的区别。
我们先来看看Hashtable吧。
成员变量:
//存储单链表表头的数组,和HashMap中类似
private transient Entry[] table;
//Hashtable中实际元素...
分类:
其他好文 时间:
2015-08-12 23:37:13
阅读次数:
152
package com.journaldev.util;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;publ...
分类:
其他好文 时间:
2015-08-12 21:32:57
阅读次数:
123
前言:
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中...
分类:
编程语言 时间:
2015-08-06 18:17:31
阅读次数:
172
先写个前提,系统中用tag来唯一标识数据,比如我的tag是10010000060,那么我可以根据tag去查询这个tag所对应的实体,然后去查找这个实体所对应的实体属性字段,最后根据这些实体属性字段的不同值(也就是规则)去查询数据,这样前后台都可以做代码的重构,然而我在数据钻取的时候,也就是说这个数据链接这个用户可能会去点多次,所以应该考虑到访问数据库次数的问题,怎样才能把这种小的数据量去缓存起来,...
分类:
其他好文 时间:
2015-08-03 19:20:01
阅读次数:
150
ConcurrentMap和Guava的LocalCache实现原理相近,底层的存储方式使用的时table方式来存储。这里使用最简单且最暴力的方式,在每次访问的时候均加锁。ConcurrentHashMap接口:public interface ConcurrentHashMap { publ...
分类:
编程语言 时间:
2015-07-25 22:41:25
阅读次数:
232