在实际开发中可能存在多线程高并发调用hashmap的情况,首先要了解什么是hashmap,hashmap浅析
一、hashmap多线程并发时存在的问题
Hashmap不是线程安全的。在高并发环境下做插入操作,有可能出现下面的环形链表:
首先要了解rehash,rehash是hashmap扩容时的一个步骤。
由于hashmap的长度是有限的,当经过多次元素的插入,hashmap可用长度变小,key值映射位置发生冲突的几率也会变大,这时候hashmap就会扩充它的长度,也就是扩容(resize)
影响发生Resize的因素有两个:
1.Capacity
HashMap的当前长度。一般来说,HashMap的长度是2的幂。