亲宝软件园·资讯

展开

面试官问: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

加载全部内容

相关教程
猜你喜欢
用户评论