发布时间:2026/7/10 2:33:26
jdk1.8的hashmap扩容时会发生数据丢失吗,大家来看看我的说法对不对 JDK1.8 HashMap 并发扩容数据丢失问题分析一、核心结论JDK 1.8 的 HashMap 仅通过尾插法解决了 JDK1.7 并发扩容时环形链表死循环问题但没有解决并发扩容导致的数据丢失问题HashMap 依旧线程不安全多线程同时触发扩容依然会出现元素丢失、数据覆盖现象。二、场景前置条件HashMap 原始数组 table 容量 2数组下标 1 位置链表3 - 7 - 5存在两个并发线程线程 A、线程 B同时执行扩容resize()方法JDK1.8 扩容逻辑按节点 hash 高位区分原链表拆分为两条子链表低位链表留在原下标高位链表迁移至原下标 原容量位置采用尾插法迁移节点三、线程调度时序复现数据丢失过程步骤 1两线程同时进入扩容逻辑线程 A 中途阻塞线程 A、B 同步读取旧数组开始遍历下标 1 的链表迁移节点线程 A 遍历到节点e3预存下一个节点引用next7此时 CPU 切换线程 A 被阻塞挂起。步骤 2线程 B 完整执行扩容完成数组替换线程 B 不受阻塞完整遍历整条链表3-7-5按 hash 拆分迁移元素 5hash 高位为 0留在新数组下标 1元素 3、7hash 高位为 1迁移至新数组下标 3形成链表3-7-null线程 B 完成全部节点迁移将扩容后的新数组赋值给 HashMap 全局变量table旧数组引用失效。此时内存中最新 table 状态table[1] 5table[3] 3 - 7 - null步骤 3线程 A 恢复时间片基于旧引用继续遍历丢数据线程 A 被唤醒后持有的仍是扩容前旧链表的引用继续执行循环先处理节点e3完成迁移读取预存的next7赋值给e继续处理节点 7读取节点 7 的后继指针7.next nullnext赋值为 null循环判定next null直接终止链表遍历。步骤 4最终结果 —— 元素 5 永久丢失线程 A 只遍历了3、7两个节点完全没有读取到节点 5不会对 5 做任何迁移操作线程 A 迁移完成后覆盖数组最终新数组中不存在元素 5数据丢失。

相关新闻

2026/7/10 2:28:25

大模型项目数据治理:核心挑战与落地实践指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 大模型项目在企业落地过程中,数据治理往往成为最关键的瓶颈。很多团队在模型选型、算法优化上投入大量精力,却…

2026/7/10 3:43:30

VC++运行库缺失问题全解析:从原理到一键修复方案

1. 项目概述:为什么我们需要一个“修复工具”?如果你在Windows上用过一些老游戏、专业软件或者某些绿色版/破解版的应用,大概率见过这个弹窗:“无法启动此程序,因为计算机中丢失 MSVCP140.dll”或者“应用程序无法正常…

2026/7/10 3:43:30

企业微信API实战:新好友自动通过+拉群全攻略

前言 在私域运营中,广告投放或活动引流带来的流量往往具有瞬时、高并发的特点。当大量的潜在客户同时发起加好友申请时,纯靠人工手动点击通过、再逐个发送欢迎语和拉群邀请,极易因为响应不及时导致流量流失。 本文将从接口层面的实现思路出…

2026/7/10 3:43:30

旧安卓手机变边缘计算节点:Hermes Agent + Termux 部署实战

1. 为什么废旧安卓手机突然成了 Hermes Agent 的“黄金矿机”你手边那台被塞在抽屉角落、屏幕有划痕、电池掉电快、连微信都懒得更新的旧安卓手机,最近可能正悄悄升值——不是因为情怀,而是因为它恰好满足了 Hermes Agent 运行最苛刻也最朴素的三个物理条…

2026/7/10 3:43:30

研究生如何读懂一篇文献-持续尝试ing

一、会选 (1)综述的定义与价值 综述由领域资深学者撰写,系统梳理领域近年研究进展,会阐明领域发展水平、主流技术方法、学界争议、未来研究方向;吃透一篇优质综述,入门效率远高于零散阅读多篇普通原始论文。 (2)综述检索渠道 理工科:检索 Nature、Science、Cell 顶刊…

2026/7/10 3:43:30

一个平台,驾驭全球顶级AI大模型

还在为用不同AI模型到处注册、分别充值、反复切换账号而头疼?Mass 聚合平台,把全球顶级大模型装进一个入口🌍 一个账号,畅享全球模型ChatGPT(GPT系列)—— 对话、写作、代码,全能选手即梦 3.5 P…

2026/7/10 3:38:30

eNSP--防火墙

1.配置pc1,2的ip2.防火墙配置[SRG]int g0/0/2[SRG-GigabitEthernet0/0/2]ip address 192.168.1.1 24[SRG-GigabitEthernet0/0/2]q[SRG]int g0/0/3[SRG-GigabitEthernet0/0/3]ip address 192.168.2.1 24[SRG]firewall zone untrust [SRG-zone-untrust]add int g0/0/2…

2026/7/9 1:39:10

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/10 2:34:05

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/10 0:02:49

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾为整理旅行照片时发现拍摄时间错乱而头疼?是否需要在数百张照片中批量…

2026/7/9 5:30:41

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…