java ConcurrentHashMap 初识
2016-08-27 22:59
197 查看
“ConcurrentHashMap是一个线程安全的哈希表“,但是不允许key和value为空;
HashTable和ConcurrentHashMap都是线程安全的,但是HashTable是同步容器,ConcurrentHashMap是并发容器,采用了锁分离策略,在并发环境中,应多使
用ConcurrentHashMap,它具有非常好的并发性能,可以多个线程同时读写。而HashTable只能同时一个线程读写。
可以简单的把ConcurrentHashMap理解为多个HashMap组合,锁不是在ConcurrentHashMap上,而是在某个HashMap上。(segment机制)
从ConcurrentHashMap代码中可以看出,它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable(segment),根据key.hashCode()来决定把key放到哪个HashTable中。
在ConcurrentHashMap中,就是把Map分成了N个Segment,put和get的时候,都是现根据key.hashCode()算出放到哪个Segment中:
学习自:http://blog.csdn.net/xuefeng0707/article/details/40834595
HashTable和ConcurrentHashMap都是线程安全的,但是HashTable是同步容器,ConcurrentHashMap是并发容器,采用了锁分离策略,在并发环境中,应多使
用ConcurrentHashMap,它具有非常好的并发性能,可以多个线程同时读写。而HashTable只能同时一个线程读写。
可以简单的把ConcurrentHashMap理解为多个HashMap组合,锁不是在ConcurrentHashMap上,而是在某个HashMap上。(segment机制)
从ConcurrentHashMap代码中可以看出,它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable(segment),根据key.hashCode()来决定把key放到哪个HashTable中。
在ConcurrentHashMap中,就是把Map分成了N个Segment,put和get的时候,都是现根据key.hashCode()算出放到哪个Segment中:
学习自:http://blog.csdn.net/xuefeng0707/article/details/40834595
相关文章推荐
- 【初识Java】控制结构的使用
- Java我的感情岁月——初识
- 初识j2ee——一个java新手的感触
- java中的内部类初识
- java.1 java初识
- Poechant 解读 Java API —— 借助货币格式化,初识 Locale 和 NumberFormat
- 初识java
- JAVA Swt初识
- 初识JAVA有感
- [原创]初识JavaWebStart(JWS)--献给我亲爱的父母
- 我的JAVA之旅(二)初识JAVA
- 初识Java
- J2ME初识--JAVA基础
- JAVA AJAX教程第一章—初识AJAX
- 初识java事件处理
- 初识JAVA,从分类开始
- 初识java真面目
- 初识Linux--JAVA_HOME
- java Gui初识
- 黑马程序员(学习笔记二)初识java特点