数组初始化和数组扩容都是调用的resize()方法。在resize()的前部分就是对数组的初始化。我们先来看数组初始化,再去看数组扩容。
resize数组初始化部分
横线以上是数组初始化,那数组扩容从另一个角度来说也是“数组初始化”,都是新创建数组,让成员变量table指向这个新创建的数组。
所以接下来我们看看扩容过程中“桶”上数据的迁移。
resize数组迁移
了解完hashmap的重要方法之后,接下来我们看看hashmap是怎么造成线程不安全的。
参考:hashmap线程不安全的讲解
这篇文章图文并茂,清楚地讲解了hashmap怎么造成线程不安全,文笔也很好,完全可以作为这篇文章的一个小节,我就不再重新归纳。
网友评论