HashMap与HashTable的区别
来源:互联网 发布:淘宝下载windows10 编辑:程序博客网 时间:2024/05/22 21:42
1. HashMap与HashTable的区别
2. 如何线程安全的使用HashMap
- 这个问题其实就是在问HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别
- HashMap不是线程安全的;Hashtable 线程安全,但效率低,因为是 Hashtable 是使用 synchronized 的,所有线程竞争同一把锁;而 ConcurrentHashMap 不仅线程安全而且效率高,因为它包含一个 segment 数组,将数据分段存储,给每一段数据配一把锁,也就是所谓的锁分段技术
- 三种方式
Hashtable
ConcurrentHashMap
Synchronized Map
//Hashtable Map<String, String> hashtable = new Hashtable<>(); //synchronizedMap Map<String, String> synchronizedHashMap = Collections.synchronizedMap(new HashMap<String, String>()); //ConcurrentHashMap Map<String, String> concurrentHashMap = new ConcurrentHashMap<>();
Hashtable
public synchronized V get(Object key) { // 省略实现 } public synchronized V put(K key, V value) { // 省略实现 }
所以当一个线程访问 HashTable 的同步方法时,其他线程如果也要访问同步方法,会被阻塞住。举个例子,当一个线程使用 put 方法时,另一个线程不但不可以使用 put 方法,连 get 方法都不可以,好霸道啊!!!so~~,效率很低,现在基本不会选择它了
ConcurrentHashMap
ConcurrentHashMap使用分段锁技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。如下图是ConcurrentHashMap的内部结构图:
阅读全文
0 0
- HashTable与HashMap的区别
- HashMap与Hashtable的区别
- Hashtable与HashMap的区别:
- HashMap 与 Hashtable 的区别?
- HashMap与HashTable的区别
- HashMap与Hashtable的区别
- HashMap与Hashtable的区别
- HashTable与HashMap的区别
- Hashtable与HashMap的区别
- HashMap与Hashtable的区别
- HashMap与HashTable的区别?
- hashtable与hashmap的区别
- HashMap与Hashtable的区别
- HashMap与Hashtable的区别
- HashMap与Hashtable的区别
- HashMap与Hashtable的区别
- hashtable与hashmap的区别
- HashMap与Hashtable的区别
- CM启动sentry服务提示错误的解决办法
- delphi怎样编译LINUX程序
- cocos2d-x 缓动曲线
- IT新篇章
- 基于Dragonboard410c的智能音箱(二)
- HashMap与HashTable的区别
- Git 常用命令大全
- 【学习摘记】马士兵Servlet&JSP_课时6_htm页面提交数据并显示在新的页面上
- 伟大的git 操作命令总结
- 解决android sdk manager下载慢
- 记一次 OOM经验
- 专家预测一年内AI“黑客”将至_你做好准备了吗?
- angularjs4部署文件过大解决过程
- pig 的udf中不能import json 问题