java 如何让HashMap变成线程安全的
我们都知道。HashMap是非线程安全的(非同步的)。那么怎么才能让HashMap变成线程安全的呢?
我认为主要可以通过以下三种方法来实现:
1.替换成Hashtable,Hashtable通过对整个表上锁实现线程安全,因此效率比较低
2.使用Collections类的synchronizedMap方法包装一下。方法如下:
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) 返回由指定映射支持的同步(线程安全的)映射
private static Map<String,List<MaxMinTimeValue>> maxMinTimeValueMap = Collections.synchronizedMap(new LinkedHashMap<String,List<MaxMinTimeValue>>()); private static Map<String,MaxMinTimeValue> maxMinTimeValueMap4Kuashiduan = Collections.synchronizedMap(new LinkedHashMap<String,MaxMinTimeValue>());
3.使用ConcurrentHashMap,它使用分段锁来保证线程安全
通过前两种方式获得的线程安全的HashMap在读写数据的时候会对整个容器上锁,而ConcurrentHashMap并不需要对整个容器上锁,它只需要锁住要修改的部分就行了
java 如何让HashMap变成线程安全的相关推荐
- java单例模式和HashMap的线程安全
单例模式参考http://blog.csdn.net/zercle/article/details/4503355 (该文章参考了http://wmj2003.iteye.com/blog/37951 ...
- Java集合:HashMap线程不安全?有哪些表现?
HashMap是线程不安全的!主要表现在多线程情况下: 1)hash冲突时,put方法不是同步的,先存的值会被后存的值覆盖.(1.7和1.8都有的表现) 2)在resize的时候,可能会导致死循环(环 ...
- java hashmap非线程安全
理解和讨论HashMap的线程安全 (2010-06-22 23:00:42) 转载▼ 标签: cache 杂谈 分类: 技术 原贴地址:http://www.javaeye.com/topic/65 ...
- java中为什么Hashtable是线程安全的,而HashMap是线程不安全的?还有ArrayList为什么是线程不安全的,Vector是线程安全的??
文章目录 一.HashMap解析 二.Hashtable解析 三.Collections.synchronizedMap()解析 四.ConcurrentHashMap 五.ArrayList为什么是 ...
- HashMap 为什么线程不安全?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:developer cnblogs.com/develope ...
- 都说 HashMap 是线程不安全的,到底体现在哪儿?
前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密. 1.jdk1.7中的HashMap 在jdk1.8中对HashM ...
- 面试 | HashMap 为什么线程不安全?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | cnblogs.com/developer_c ...
- 【面试题】你知道为什么HashMap是线程不安全的吗?
我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密. jdk1.7中的HashMap 在jdk1.8中对HashMap做了很 ...
- 【Java基础】HashMap原理详解
[Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...
最新文章
- java.io.file jar_IDEA Maven 打包运行 jar java.io.FileNotFoundException: 问题?
- Python基础入门之解释器安装
- 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入
- tensorflow lstm从隐状态到预测值_机器学习100天-Day2405 循环神经网络RNN(LSTM)
- [转]数据结构KMP算法配图详解(超详细)
- 今天rpm装glibc和glibc-common版本,出现二个包相互依赖,解决办法
- 解决RecyclerView瀑布流效果结合Glide使用时图片变形的问题
- 第五章 PYTHON标准库
- 疯癫的我到了巅峰 -- 我的成人礼
- QT之qss教程- QScrollBar
- windows命令字典(收藏)
- 自动化提升系列:在白色背景上拍摄白色产品
- Windows10系统安装postgreSQL出错解决方法
- 从npm、npx说起,到shell
- 解决win10开机内存过高的办法(亲测有效)
- java微信小程序、APP 西门子PLC通信,java S7-S200、java S7-300、java S7-400,java与PROFINET协议通信 Java与西门子PLC通信
- python批量整理地籍项目的文件夹
- Python 实验题目:字符串格式化输出内容为:姓名:张三,学号:1101,张三的平均分为90.65分。(平均分的原始值为:90.6497)
- Map List的拼接实现输出整个学期的成绩单
- Android单独的服务App,值得推荐的 4 款独立开发者 APP