上一章节,分析了常用的Map集合,随着互联网多线程并发的场景越来越多,原始的数据结构已经无法满足真是的场景需求,所以这种线程安全的集合就显得非常重要。这里介绍一下ConcurrentHashMap和HashTable两种线程安全的数据集合。
那么在分析之前我们首先提出一个问题ConcurrentHashMap和HashTable在做线程安全时的区别?
这里介绍一个比较全面分析源码的帖子:http://blog.csdn.net/zhangerqing/article/details/8193118
总结:
1、HashTable与HashMap采用的数据结构一致。只不过HashTable是线程安全的,在主要的操作方法上都实现了synchronized同步
2、HashTable不允许null的key值存储,如果存储后会报NullPointerException异常
3、ConcurrentHashMap是线程安全的HashMap
4、HashTable和ConcurrentHashMap的区别在于实现锁的机制不一样,ConcurrentHashMap锁的是哈希表中的key,而HashTable锁的是整个哈希表,如下图(侵删)

来源:oschina
链接:https://my.oschina.net/u/3196846/blog/1553508