HashMap为什么在多线程下会让cpu100%

Posted 找到属于自己的天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap为什么在多线程下会让cpu100%相关的知识,希望对你有一定的参考价值。

    首先HashMap并不是sun公司多线程提供的集合,很多时候我们的程序是一个主线程,用了hashmap并没有什么问题,但是在多线程下会出现问题。

hashmap是一个哈希表,存储的数据结构也可以是一个线性数组,我们的存储的数据都在entry里,默认的大小是16, 因子是0.75  当达到16*0.75的时候就会扩充

把原来的数据transfer在新的扩充的容器里,在转换的时候如果是一个线程并没有什么问题,但是在多线程的时候,如果在临界点的时候,如果存储的值得hash值对数组的长度去摸一样,就会存

在一个下标里,这样的话,会造成下标对应的链表对应的值会呈现一个环装的结构,当对map.get这个值的时候,程序会死循环,这样cpu就会100%。具体百度吧 ,这里没有说得很仔细。

以上是关于HashMap为什么在多线程下会让cpu100%的主要内容,如果未能解决你的问题,请参考以下文章

记一次线上故障--HashMap在多线程条件下运行造成CPU 100%

记一次线上故障--HashMap在多线程条件下运行造成CPU 100%

原来,JDK8的ConcurrentHashMap也会造成CPU 100%

不止JDK7的HashMap,JDK8的ConcurrentHashMap也会造成CPU 100%

JAVAHashMap的原理及多线程下死循环的原因

如何在多线程应用程序中实现 100% 的 CPU 使用率?