文档章节

HashMap的同步操作

许雷神
 许雷神
发布于 2015/05/23 11:04
字数 354
阅读 51
收藏 0
HashMap是大家很常用的一个Map,所以都认为他是很好用的一个Map,也就不去想他是否存在一些不合理的地方,像我刚刚看到这个错误的时候,我也是直接忽略掉,但是根据后来的详细了解,发现了HashMap的一些问题,在一些情况下是不能使用的。
首先HashMap是个非线程安全的函数,我们做web项目,一个请求进来,其实就相当于一个线程了,当很多线程对一个Hashmap又put又get的时候,CPU会很不稳定,因为每Put一次都会对map扩容一次,并且多多线程操作的时候,会有冲突.
所以解决办法有两个,我现在是用的第一个
1.将hashMap换成ConcurrentHashMap ,ConcurrentHashMap是线程安全的一个函数,并且执行效率挺高
2.在使用map的get或者put的时候,加上synchronized 同步块,这样可以导致多线程的冲突,大家都知道 一般加了synchronized 都需要排队执行的,所以执行效率比较低

1.key 为 String类型的时候,concurrenthashmap 比 hashMap 更快!
2.key 为int类型的时候比Key为String的要快很多!因为String的话 java还会对他做下hashcode的操作,所以如果key能放int 尽量放int


本文转载自:#

共有 人打赏支持
许雷神
粉丝 7
博文 13
码字总数 0
作品 0
广州
私信 提问
再谈HashMap与HashTable,引入TreeMap浅谈

(1)首先说明HashMap与HashTable: HashMap是线程不安全的,是对HashTable的轻量级实现,都是对双列数据的存储。HashMap是在jdk1.2引进的对Map的实现,HashTable出现较早。 HashMap允许null-...

hanzhankang
2014/01/17
0
0
ConcurrentHashMap 、HashTable

java集合类中非线程安全的集合可以用同步包装器使集合变成线程安全,比如: HashMap --> Collections.synchronizedMap(new HashMap()), 那如果比较Collections.synchronizedMap(new HashMap...

八戒_o
2016/01/05
83
0
Class HashMap笔记

实现接口:Serializable, Cloneable, Map<K,V> 派生自AbstractMap<K,V> HashMap与HashTable的操作几乎相同,除了HashMap是非同步的,并且允许null的value和key。不保证map的顺序固定。 如果h...

精神病的羽毛球
2014/03/31
0
0
Hashtable、HashMap、TreeMap有什么区别?

版权声明:本文供交流学习,能够帮助到你是我最大的荣幸! https://blog.csdn.net/u014231523/article/details/82320983 Map是java广义集合框架的另外一部分,其中HashMap又是使用频率最高的...

兴国First
2018/09/02
0
0
造成HashMap非线程安全的原因

在前面我的一篇总结文章中提到,为了数据能在线程范围内使用,我用了 HashMap 来存储不同线程中的数据,key 为当前线程,value 为当前线程中的数据。我取的时候根据当前线程名从 HashMap 中取...

编辑之路
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxprobe16
36分钟前
1
0
OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
今天
45
4
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
3
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部