【转载】JDK8 ConcurrentHashMap.computeIfAbsent 死循环 Bug

JDK8 ConcurrentHashMap computeIfAbsent bug分析 前段时间准备研究一波Mybatis,代码下载到IDEA,一路Debug走了一遍,头已经绕晕,准备放弃突然看到一些英文 上面写了啥bug 啥的,于是打开链接看了下,大概就是说的computeIfAbsent 方法,如果key存在的情况下也会加锁,会影响性能,后面又百度了下,发现还有其他bug 在写本文前,也看了些网上的文章,大概就是说的是在调用computeIfAbsent(key, …)方法时,正好其他线程需要在key对应位置插入结点,因为computeIfAbsent方法将位置设置了Reservati 阅读详情

ConcurrentHashMap.computeIfAbsent 死循环【最终版】

文章链接: http://mp.weixin.qq.com/s/O6UmB7YDKIYtNvqCOjNwDQ

官方Bug报告:https://bugs.openjdk.java.net/browse/JDK-8062841

Java并发进阶系列:深度讨论官方关于jdk1.8ConcurrentHashMap的computeIfAbsent源代码修复逻辑 在文章中《深度解析官方关于jdk1.8的resizeStamp的bug处理过程》,我们讨论关于CHM的核心设计——resizeStam需要修复的处理过程,本文再次基于openJDK的bugs讨论组提出的CHM源代码另外一个会造成死循环的bug,默认读者已经掌握CHM的核心源代码实现,否则无法从本文的讨论中获益。文章前部分先把computeIfAbsent的bug成因分析清楚,再来介绍官网ConcurrentHashMap.computeIfAbsent stuck in an endless loop的讨论 阅读详情

相关推荐

JDK8中一个著名的Bug:不了解这个Bug,如何期望加薪?

然而,JDK8中存在一些著名的Bug,其中一个Bug对于开发人员来说具有重要的影响。该Bug涉及到JDK8中的一个内存泄漏问题,当在某些特定情况下使用Java的匿名内部类时,可能会导致内存泄漏,最终可能导致系统性能下降或内存不足。该Bug涉及到JDK8中的一个内存泄漏问题,当在某些特定情况下使用Java的匿名内部类时,可能会导致内存泄漏,最终可能导致系统性能下降或内存不足。请注意,本文中提供的解决方案仅针对该Bug的示例情况,并不JDK8中一个著名的Bug:不了解这个Bug,如何期望加薪?

AzProcessgroup的博客 293

concurrentHashmap 中 computerIfAbsent 方法的bug

1为了保证原子性,对相同 key 进行修改时,可能造成线程阻塞。 (详细参见:MyBatis 3.5.X 在 JDK8 中的性能问题) The entire method invocation is performed atomically, so the function is applied at most once per key. Some attempted update operations on this map by other threads may be blocked while.

ice-wee的专栏 1650

JDK8踩坑记:那些让你哭笑不得的Bug

通过以上分析,我们可以看到,在使用JDK8时,有很多需要注意的地方。预防这些问题的最佳方式就是保持对最新技术和标准的关注,并确保在项目中实施最佳实践。希望这篇指南能帮助你在使用JDK8时避免一些常见的陷阱,让你的开发之路更加顺畅。如果你在实践中遇到了其他问题,不妨在评论区分享出来,也许会有同行能给出有用的建议哦!

java专栏 882

你连存活到JDK8中著名的Bug都不知道,你怎么敢跳槽涨薪的?

在笔者研究 JDK 源码时,注意到在CopyOnWriteArrayList和ArrayList的构造器中都出现了如下 bug 字样

软件测试技术分享官 474

JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug问题

主要介绍了JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Android GNSS 可视卫星星空图/卫星天顶图 原理及画法介绍

目录1 概念介绍2 绘制步骤2.1 获取卫星信息2.2 绘制底图 效果图: 1 概念介绍 首先介绍一下方位角和高度角的概念: 方位角:是从某点的指北(地理北极)方向线起,依顺时针方向到目标方向线之间的水平夹角。 高度角:从一点至观测目标的方向线与水平面间的夹角。 卫星天顶图 即是根据每一颗卫星的方位角和高度角将其画在以观测位置为中心的天顶图上。 天顶图其底图为由外向内的三个圆和四条直线。三个圆由外向内依次代表高度角0°、30°、60°,中心点代表90°;四条直线分别表示正北-正南、东北-西南、正东

x1471898145的博客 1万+

JDK8的ConcurrentHashMap也会造成CPU 100%

转载:不止 JDK7 的 HashMap ,JDK8 的 ConcurrentHashMap 也会造成 CPU 100%?原因与解决~ 现象 大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象,这个由于在扩容的时候put时产生了死链,由此会在get时造成了CPU 100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap...

350

FreeModbus源码详解

本篇按照FreeModbus协议栈的工作流程,对源代码进行总结解析;FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完整的报文后,对报文进行解析,然后响应主机,发送报文给主机,实现主机和从机之间的通信; 1:demo.c中三个函数,完成协议栈的准备工作; eMBInit()函数:(mb.c) /*函数功能: *1:实现RTU模式和ASCALL模式的协议栈初始化; *2

2万+

hashmap在java哪个包_Java并发包之ConcurrentHashMap

本文分析并补充一下线程安全的HashMap-ConcurrentHashMap参考优秀博文: 深入并发包 ConcurrentHashMap补充:CocurrentHashMap能完全代替Hashtable吗?我们知道Hashtable是synchronized的,会锁定整个map,当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。ConcurrentHa...

weixin_39977776的博客 1678

电机控制-PMSM无感FOC控制(五)SVPWM过调制策略优化与谐波抑制

本文深入探讨了PMSM无感FOC控制中的SVPWM过调制策略优化与谐波抑制。针对电机高速运行时电压利用率不足的问题,分析了过调制技术的必要性,并详细阐述了分区过调制、谐波注入及闭环优化等主流策略,旨在提升电压利用率与抑制电流谐波,实现电机高性能控制。

convnet3designer的博客 353

kali2020.2安装出现的问题并附详细解决办法

kali2020.2的安装

weixin_48776804的博客 3048

JDK中ConcurrentHashMap效率测试

比较HashMap HashTable 和ConcurrentHashMap的效率. 一般情况下,达到一定的数量之后JDK1.5之后提供的ConcurrentHashMap集合类的效率是前两者的3~4倍左右. 前两种集合类的效率比较接近. ConcurrentHashMapTest.java 1 import java.util.Collect...

weixin_33705053的博客 150

从仿真到实践:两级直接耦合放大电路的静态工作点协同调试指南

本文详细解析了两级直接耦合放大电路的静态工作点协同调试方法,从仿真到实践提供系统指南。重点介绍了Rc2电阻调整技巧、集电极电位测量方法及常见问题排查,帮助工程师解决各级静态工作点相互影响的难题,提升模拟电路设计效率。

weixin_29189373的博客 124

深入剖析ConcurrentHashMap:高并发场景下的线程安全与性能优化

在并发编程中,线程安全容器是保障数据一致性与系统稳定性的基石。其核心原理在于通过锁分离、锁细化等技术,将全局锁的串行操作转化为细粒度的并行处理,从而在保证数据安全的前提下大幅提升吞吐量。从技术价值看,这类设计有效解决了高并发下的性能瓶颈,避免了因资源竞争导致的死锁或数据错乱问题。在实际应用场景中,它们尤其适用于缓存系统、会话存储和实时计数器等读多写少或写冲突不频繁的业务。本文以ConcurrentHashMap为例,结合其内部的无锁化设计、CAS操作以及扩容机制,详细解析了如何通过精巧的数据结构实现高效的并

weixin_34037173的博客 365

【AI之路】cmd命令行通过Huggingface镜像站快速下载模型文件的方法

Hugging Face Hub 是分享机器学习模型、演示、数据集和指标的首选之地。huggingface_hub 库可以轻松下载Huggingface上有用的模型和数据集元数据。但大模型文件通常较大,国内下载太慢,那有没有高效便捷的方法?这个当然必须有!看到了吗?只是添加一个参数,下载大模型就搞定了。当然也可以使用python程序来下载。具体见前期博文:【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)

IT里的交易员-博客 1853

借助OSS搭建在线教育视频课程分享网站-阿里云的课程体验和记录

阿里云的《搭建在线教育网站》免费课程里面讲的啥,我点进去看了看

LegendNoTitle的博客 3023

运放信号运算电路全解析:从虚短虚断到积分微分与实战调试

在模拟电子技术中,运算放大器常被理解为单纯的信号放大器件,但它在传感器信号调理、精密测量与控制系统里真正承担的角色,是基于负反馈实现数学运算。虚短与虚断作为分析线性运放电路的两大基础,揭示了高开环增益配合深度负反馈如何让电路特性由外围阻容决定。理解比例、求和、积分、微分等基本运算拓扑,工程师就能灵活设计信号变换链路,例如将微弱差分信号偏移、缩放至ADC量程。实际工程中还需重视失调电压、偏置电流、增益带宽积与共模抑制等非理想参数对精度的改写。本文从理想模型到工程选型,系统梳理运放信号运算电路的设计要点与调试方

weixin_34161064的博客 303

AI 辅助编程全景:演进、提效场景与未来趋势

本文系统梳理了AI辅助编程的发展历程与应用场景。演进路径分为三代:从代码补全工具(2023)、对话式助手(2024)到自主编程代理(2025)。在软件全生命周期中,AI可显著提升各环节效率:需求分析阶段节省30-60%文档编写时间;设计阶段缩短40-60%技术调研周期;编码阶段通过智能补全提升55%任务速度;测试阶段减少30-60%测试编写时间。数据显示,2025年84%开发者使用AI工具,41%代码由AI生成,平均每周节省3.6小时。AI正推动开发者角色从编写者转变为审核者,但复杂业务逻辑和架构设计仍需人

甘蓝的专栏 472

性能有坑 | 慎用 Java 8 ConcurrentHashMap 的 computeIfAbsent

千万要注意 ConcurrentHashMap 的 computeIfAbsent 可能会有性能问题!

wu_weijie的博客 7343

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JDK1.8 ConcurrentHashMap的死循环bug

JDK1.8 ConcurrentHashMap的死循环bug

不积硅步,无以至千里 1752

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

在笔者研究 JDK 源码时,注意到在CopyOnWriteArrayList 和ArrayList 的构造器中都出现了如下 bug 字样

自动化软件测试 336

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ConcurrentHashMap的死循环问题

对于ConcurrentHashMap来说,能保证多线程下的安全问题,但是在JDK1.8中还是会出现一个bug,就是computeIfAbsent,下面就来详细说说死循环的原因。

Jwasx的博客 3965

ConcurrentHashMap里面也有死循环,作者留下的彩蛋了解一下?

https://www.toutiao.com/article/6838199855249097219/?timestamp=1592179075&app=news_article_lite&group_id=6838199855249097219&req_id=20200615075755010027024142236D2953&wid=1648794209198 JDK BUG 这篇文章,聊一下我最近才知道的一个关于 JDK 8 的 BUG 吧。 首先说一下我是

yygr的博客 917

Java集合框架常见错误解析

Java 8的Map.computeIfAbsent方法虽简化了代码,但在递归或依赖计算场景存在并发修改风险。不同Java版本表现各异:Java 8可能损坏HashMap结构,Java 9+会抛出异常。典型问题出现在递归调用或函数内部修改Map时。解决方案建议回退传统get/put模式,确保映射函数纯净,避免测试顺序敏感性。静态分析工具可辅助检测,但复杂场景应优先采用专业缓存库或显式解耦计算过程。版本升级时需特别注意TreeMap在Java 15的行为变化。

静水深流 254

jdk8 bug实锤

目前公司使用的是jdk8,用jdk8肯定的用他的新特性,比如说到的集合迭代器配合Lambda表达式迭代集合。效率基本跟之前的for没有什么区别。 那么在最近使用jdk8集合的默认迭代器的时候,多数据源的场景出现了一个非常有意思的问题,我先贴代码,然后说明我提出的bug供大家探讨。 定时任务核心代码如下: 简单的解释一下业务逻辑, 各位看代码有什么问题没有?我估计也一下子看不出什么问题吧 简单的说一下bug 冻结表 账户表 这两条数据是我需要解冻的,也即是操作3需...

FISH的专栏 955
上一篇: oracle创建表空间用户
下一篇: Java集合类框架学习 1 —— 概述与基础
farmering
博客等级 码龄15年 18粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值