Java容器源码分析-高并发处理Map-ConcurrentHashMap和HashTable

徘徊边缘 提交于 2019-11-29 19:35:14

    上一章节,分析了常用的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锁的是整个哈希表,如下图(侵删)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!