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数据丢失。

相关新闻

最新新闻

国开全网学习APP华为鸿蒙如何扫码考试

国开全网学习APP华为鸿蒙如何扫码考试

国开要线上考试了,有小伙伴无法用华为手机鸿蒙系统扫码考试,非常着急,难道要再买一个安卓手机吗?不,其实可以用卓易通下载安卓应用。下载一个安卓版的国开全网学习app。 但是不知道是网络的问题,还是这么回…

2026/7/10 3:23:25
AI Agent开发实战:从零构建具备自主规划与工具调用能力的智能体

AI Agent开发实战:从零构建具备自主规划与工具调用能力的智能体

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近在尝试将大模型应用到实际业务中时,发现单纯调用API生成文本已经无法满足复杂任务的需求。比如,想让AI自动…

2026/7/10 3:23:25
OpenClaw智能体一键部署:扣子设计+腾讯云运行双路径实战

OpenClaw智能体一键部署:扣子设计+腾讯云运行双路径实战

1. 项目概述:这不是养龙虾,是用OpenClaw跑通一个AI智能体工作流的完整闭环“新手零踩坑!OpenClaw一键部署教程 快速养龙虾(扣子腾讯云双方案,小白也能10分钟上手)”——这个标题乍看像美食博主在教水产养殖…

2026/7/10 3:23:25
MySQL基础入门:从零理解数据库与SQL

MySQL基础入门:从零理解数据库与SQL

后端开发绕不开数据库,而 MySQL 是绝大多数人接触的第一款关系型数据库。从一个小型博客到千万用户的电商平台,MySQL 都在背后默默存着每一行数据。本文带你从"数据库是什么"开始,到亲手建库建表、插入查询数据,搭建一个…

2026/7/10 3:23:25
Qwen3.5+ncnn:轻量化多模态模型边缘部署实战指南

Qwen3.5+ncnn:轻量化多模态模型边缘部署实战指南

1. 为什么是 Qwen3.5 ncnn?一个被低估的轻量化多模态落地组合最近在几个嵌入式AI项目里反复验证了一件事:当你要把“能看图、能识字、能推理”的多模态大语言模型塞进边缘设备——比如带摄像头的工业网关、国产RK3568开发板、甚至树莓派5——绝大多数人…

2026/7/10 3:23:25
WordPress建站实战:从零搭建盈利性养鱼主题网站完整指南

WordPress建站实战:从零搭建盈利性养鱼主题网站完整指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个具体的海外副业项目:如何从零开始搭建一个能够赚取美金的养鱼主题网站。这个项目不是概念探讨&#xff0…

2026/7/10 3:18:25

月新闻