hashmap动态扩容死循环_HashMap扩容

hashmap动态扩容死循环_HashMap扩容HashMap扩容死循环问题源码分析问题(jdk1.7)一、首先hashmap单线程正常扩容遍历每个数组,依次遍历每个数组的链表,根据头插法由原来的1,2,3变为了3,2,1二、hashmap多线程扩容死循环问题两个线程e1,e2此时线程一先执行,但线程二的指向发生改变,改为线程变换后的具体存储;初始的e2指向0号位的1,但经过线程一的变换指向了2号位的1了,next也发生改变线程二开始在线程一的基础存储,当next2指向空时。e.next=newTable[i],也就

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

HashMap扩容死循环问题源码分析问题(jdk1.7)

一、首先hashmap单线程正常扩容

遍历每个数组,依次遍历每个数组的链表,根据头插法由原来的1,2,3
变为了3,2,1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、hashmap多线程扩容死循环问题

两个线程 e1 ,e2
在这里插入图片描述
此时 线程一先执行,但线程二的指向发生改变,改为线程变换后的具体存储;初始的e2指向0号位的1,但经过线程一的变换指向了2号位的1了,next也发生改变

在这里插入图片描述在这里插入图片描述
线程二开始在线程一的基础存储,

在这里插入图片描述

在这里插入图片描述

当next2指向空时 。e.next=newTable[i],也就重新指回2,形成循环链表;
在这里插入图片描述

在这里插入图片描述学习自:https://www.bilibili.com/video/BV1z54y1i73r

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191171.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 删除windows默认共享[通俗易懂]

    删除windows默认共享  Windows2000的缺省安装很容易被攻击者取得账号列表,即使安装了最新的Servicepack也是如此。在Windows2000中有一个缺省共享IPC$,并且还有诸如admin$C$D$等等,而IPC$允许匿名用户(即未经登录的用户)访问,利用这个缺省共享可以取得用户列表。要想防范这些,可将在“管理工具→本地安全策略→安全设置→本地策略→

    2022年4月15日
    43
  • mysql timestampdiff>_MySQL TIMESTAMPDIFF()用法及代码示例

    mysql timestampdiff>_MySQL TIMESTAMPDIFF()用法及代码示例TIMESTAMPDIFF():MySQL中的此函数用于从另一个函数中减去DateTime表达式后返回一个值。用法:TIMESTAMPDIFF(unit,expr1,expr2)Parameters:它将接受三个参数。单位-它表示结果的单位。可以是以下之一。微秒,秒,分钟,小时,天,周,月,季度,年expr1-第一个日期或DateTime表达式。expr2-第二个日期或DateTime表达式。返回…

    2022年6月5日
    32
  • Python字符串

    从编码和常用字符串函数两方面进行总结1.编码计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk,utf-16等等。unicode是utf-8,g

    2021年12月18日
    36
  • 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

    《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

    2022年1月4日
    41
  • 关于二叉树的前序、中序、后序三种遍历

    二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后右最后根)。    比如上图二叉树遍历结果   前序遍历:ABCDEFGHK    中序遍历:BDCAEHGKF    后序…

    2022年4月9日
    59
  • glPushMatrix()和glPopmatirx()

    原文地址:http://blog.csdn.net/tyxkzzf/article/details/40907273OpenGL有三个矩阵堆栈,分别是GL_MODELVIEW(模型视图矩阵堆栈)、GL_PROJECTION(投影矩阵堆栈)、GL_TEXTURE(纹理矩阵堆栈),用法和普通堆栈一样;这里我们只讲模型视图矩阵堆栈,OpenGL提供了相应的接口:glPushMatir

    2022年4月6日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号