文档章节

HashMap的同步操作

许雷神
 许雷神
发布于 2015/05/23 11:04
字数 354
阅读 50
收藏 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
面试必问-几种线程安全的Map解析

HashMap线程安全的吗? Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的。 看下面两个场景: 1、当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了...

java技术栈
2017/08/13
0
0
Hashtable和HashSet的区别

作者博客@Stone原地址 HashMap和Hashtable都实现了Map接口 但决定用哪一个之前先要弄清楚它们之间的分别 主要的是线程安全性,同步(synchronization),以及速度 区别 HashMap是非synchronize...

1314Stone
2017/11/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
10
0
ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部