Java7中HashMap与ConcurrentHashMap的深入解析是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计6680个文字,预计阅读时间需要27分钟。
原文出处:JavaDoop + 网上关于 HashMap 和 ConcurrentHashMap 的文章不少,但比较深入的文章不多。因此,想自己也写一篇,将细节说清楚,透彻地说透,就像 Java8 中的 ConcurrentHashMap 一样,力求全面。
原文出处: JavaDoop
网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。
阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Java7 HashMap -> Java7 ConcurrentHashMap -> Java8 HashMap -> Java8 ConcurrentHashMap 顺序进行阅读,可适当降低阅读门槛。
阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会进行展开,感兴趣的读者请自行查找相关资料。
Java7 HashMap
HashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。
首先,我们用下面这张图来介绍 HashMap 的结构。
这个仅仅是示意图,因为没有考虑到数组要扩容的情况,具体的后面再说。
本文共计6680个文字,预计阅读时间需要27分钟。
原文出处:JavaDoop + 网上关于 HashMap 和 ConcurrentHashMap 的文章不少,但比较深入的文章不多。因此,想自己也写一篇,将细节说清楚,透彻地说透,就像 Java8 中的 ConcurrentHashMap 一样,力求全面。
原文出处: JavaDoop
网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。
阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Java7 HashMap -> Java7 ConcurrentHashMap -> Java8 HashMap -> Java8 ConcurrentHashMap 顺序进行阅读,可适当降低阅读门槛。
阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会进行展开,感兴趣的读者请自行查找相关资料。
Java7 HashMap
HashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。
首先,我们用下面这张图来介绍 HashMap 的结构。
这个仅仅是示意图,因为没有考虑到数组要扩容的情况,具体的后面再说。

