【转载】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,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

别再乱点U盘里的.exe了!手把手教你清除‘Usb Disk.exe’病毒并恢复隐藏文件

本文详细介绍了如何识别和清除U盘病毒(如Usb Disk.exe),并提供从终止病毒进程到恢复隐藏文件的完整步骤。通过禁用自动播放、清理注册表和使用命令行工具,帮助用户彻底清除病毒并预防未来感染,确保数据安全。

weixin_42530732的博客 590

JDK8的ConcurrentHashMap也会造成CPU 100%

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

350

S7-1200五轴伺服系统PLC控制方案与调试技巧

工业自动化领域中,多轴伺服控制是实现精密加工的核心技术。基于PROFINET实时通信协议和PLCopen运动控制标准,现代PLC(如西门子S7-1200)能够实现多轴高精度同步控制。其技术原理是通过等时同步模式确保各轴运动的时序一致性,结合PID调节和电子齿轮比实现位置闭环。这种方案在数控机床、3D打印等场景具有重要应用价值。本文以五轴联动系统为例,详细解析了S7-1200与V90伺服驱动器的硬件组态方案,包括PROFINET环网配置和IRT同步设置。在软件层面,重点介绍了基于TIA Portal的工艺对象

weixin_34332905的博客 415

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

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

weixin_39977776的博客 1678

生成对抗网络(GAN、DCGAN、ACGAN)-----学习笔记

生成对抗网络学习笔记 生成对抗网络有两个关键结构:生成模型、判别模型。 生成模型:输入是一个服从正态分布的N维向量,利用这个N维向量生成一张图片。 判别模型:对于生成模型输出的图像判别它是不是真的图像。 生成模型和判别模型的博弈关系在于:生成模型的目的是生成让判别模型无法判别真伪的图像,而判别模型的目的是判断输入图像的真伪。 结合代码来看生成对抗网络中,生成器和判别器的训练过程: 判别模型的训...

weixin_43227526的博客 5489

解决PADs VX2.7安装中的License失效与软件卡死问题

本文详细解析了PADs VX2.7安装过程中常见的License失效与软件卡死问题,提供了从破解工具选择、环境变量设置到输入法兼容性调整等实用解决方案。特别推荐使用Siemens EDA系列新版破解工具,并分享性能调优与定期维护技巧,帮助工程师高效解决安装难题。

weixin_29234239的博客 813

JDK中ConcurrentHashMap效率测试

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

weixin_33705053的博客 150

《网络安全自学教程》- 802.1x协议

802.1x协议架构,工作原理/认证流程,认证方式,MAB认证,触发认证的三种方式,EAP报文格式,EAPOL报文格式

wangyuxiang946的博客 2万+

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

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

weixin_34037173的博客 365

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 543

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

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

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

weixin_34161064的博客 303

基于 YOLOv26 的金属表面缺陷检测系统:智能视觉质检方案

摘要: 基于YOLOv26的金属表面缺陷检测系统采用深度学习技术,实现对划痕、裂纹、腐蚀等8类常见缺陷的自动化检测。系统通过数据增强预处理和YOLOv26模型的高精度识别能力,具备多类别分类、实时推理和强鲁棒性特点,适用于不同金属材质与光照条件。架构包含数据采集、预处理、YOLOv26检测和后处理模块,代码实现采用PyTorch框架,支持训练数据增强与标准化处理,为工业质检提供高效智能解决方案。

一键难忘的博客 589

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

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

wu_weijie的博客 7343

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JDK1.8 ConcurrentHashMap的死循环bug

JDK1.8 ConcurrentHashMap的死循环bug

不积硅步,无以至千里 1752

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

自动化软件测试 336

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、付费专栏及课程。

余额充值