文档章节

ConcurrentHashMap 使用注意事项

o
 ovirtKg
发布于 2016/10/25 16:19
字数 315
阅读 68
收藏 2

对于ConcurrentHashMap  以下简称CHM 大家都非常熟悉,相信在开发中大家会经常 使用,其在1.8以前 使用锁分段技术,将锁的粒度细化。而在java1.8中使用了另外的实现方式,后面在来分析 。使用CHM需要注意的事项。

1)对于单个操作如 put , containsKey, remove 等 是线程安全的,但是组合都来就不一定了。需要注意组合起来使用的情况,而其也提供 了putifAbsent的 组合线程安全的情况。

 

2) 使用场景    get iterator clear等 都是弱一致性的,虽然性能提高了不少,但是对于数据要求强一致性的应用来说,显然并不适合直接使用CHM. 就需要使用 Hashtable,或者 HashMap , lock synchronized等形式达到数据强一制的效果 。

虽然 在迭代过程中不会抛出异常,比如说当前线程在迭代时,另一个线程是其 进行修改删除或者增加,CHM 会尽量去访问到对Map已做的修改,但这个不能保证。 具体使用时应该考虑 数据一致性 与性能 两者。

 

http://ifeve.com/concurrenthashmap-weakly-consistent/    分析弱一致性

http://ifeve.com/numa-aware-r-w-locks/              

© 著作权归作者所有

o
粉丝 3
博文 57
码字总数 48798
作品 0
景德镇
私信 提问
高效的缓存管理解决方案 - AutoLoadCache

现在使用的缓存技术很多,比如Redis、 Memcache 、 EhCache等,甚至还有使用ConcurrentHashMap 或 HashTable 来实现缓存。但在缓存的使用上,每个人都有自己的实现方式,大部分是直接与业务代...

qiujiayu
2015/12/02
10K
10
qiujiayu/AutoLoadCache

AutoLoadCache 现在使用的缓存技术很多,比如Redis、 Memcache 、 EhCache等,甚至还有使用ConcurrentHashMap 或 HashTable 来实现缓存。但在缓存的使用上,每个人都有自己的实现方式,大部分...

qiujiayu
2018/09/29
0
0
ConcurrentHashMap的了解

概述 从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了...

zh151832
2015/11/03
11
0
ConcurrentHashMap原理分析

曾经在 [高并发Java 五] JDK并发包1 中提到过ConcurrentHashMap,只是简单的提到了下ConcurrentHashMap的优点,以及大概的实现原理。 而本文则重点介绍ConcurrentHashMap实现的细节。 HashMa...

Hosee
2016/03/17
22.9K
3
并发容器学习——ConcurrentHashMap

一、ConcurrentHashMap并发容器 1.ConcurrentHashMap ConcurrentHashMap是HashMap的升级版,HashMap虽然效率高,但它是线程不安全的容器,不能再多线程环境使用,而HashTable虽然是线程安全的...

宁听
04/18
105
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
37分钟前
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
38分钟前
7
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
41分钟前
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
47分钟前
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部