java ConcurrentHashMap 初识

Posted 每天都不一样

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ConcurrentHashMap 初识相关的知识,希望对你有一定的参考价值。

 “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

以上是关于java ConcurrentHashMap 初识的主要内容,如果未能解决你的问题,请参考以下文章

Java8 ConcurrentHashMap详解

死磕 java集合之ConcurrentHashMap源码分析

Java ConcurrentHashMap工作原理及实现

ConcurrentHashMap源码解析-Java7

Java ConcurrentHashMap

Java中的ConcurrentHashMap和Hashtable [重复]