面试官问:HashMap在并发情况下为什么造成死循环?一脸懵
chinaxieshuai 人气:0
这个问题是在面试时常问的几个问题,一般在问这个问题之前会问Hashmap和HashTable的区别?面试者一般会回答:hashtable是线程安全的,hashmap是线程不安全的。
那么面试官就会紧接着问道,为什么hashmap不是线程安全的,会造成什么问题么?于是面试者就回答:HashMap在并发情况下的put操作会造成死循环。
这时候就会被面试官问:**HashMap在并发为什么造成死循环?**
很多面试者这时候就会一脸懵。没有过相关经验和深入的理解源码是很难回答这个问题的。
下面我们就通过HahMap源码来验证下,多线程并发put操作为何会生成环形链表,产生死循环。
这是HashMap扩容的源码
```java
/**
* Transfers all entries from current table to newTable.
*/
void transfer(Entry[] newTable, boolean rehash) {
int newCapacity = newTable.length;
for (Entry
加载全部内容