JDK1.8的ConcurrentHashMap中computeIfAbsent方法存在死循环bug吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计199个文字,预计阅读时间需要1分钟。
死循环问题的提出:在Java 8的`map.computeIfAbsent`方法中,存在一个潜在问题。具体代码如下:`map.computeIfAbsent(AaAa, key -> map.computeIfAbsent(BBBB, key2 -> 42));` `computeIfAbsent`方法是8.0版本中新增的,其目的是当键不存在时,将键值对插入到映射中。然而,这个方法存在逻辑错误,可能导致死循环。
死循环问题的提出:bugs.openjdk.java.net/browse/JDK-8062841
map.computeIfAbsent("AaAa",key->map.computeIfAbsent("BBBB",key2->42));
computeIfAbsent在1.8中才有的方法
computeIfAbsent意思是:key不存在时候,调用mappingFunction函数结果作为value值
debug
两个key的hash值一样,跑到同一个槽里面,然后一直死循环for
总结
到此这篇关于JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug的文章就介绍到这了,更多相关JDK1.8 ConcurrentHashMap computeIfAbsent死循环内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计199个文字,预计阅读时间需要1分钟。
死循环问题的提出:在Java 8的`map.computeIfAbsent`方法中,存在一个潜在问题。具体代码如下:`map.computeIfAbsent(AaAa, key -> map.computeIfAbsent(BBBB, key2 -> 42));` `computeIfAbsent`方法是8.0版本中新增的,其目的是当键不存在时,将键值对插入到映射中。然而,这个方法存在逻辑错误,可能导致死循环。
死循环问题的提出:bugs.openjdk.java.net/browse/JDK-8062841
map.computeIfAbsent("AaAa",key->map.computeIfAbsent("BBBB",key2->42));
computeIfAbsent在1.8中才有的方法
computeIfAbsent意思是:key不存在时候,调用mappingFunction函数结果作为value值
debug
两个key的hash值一样,跑到同一个槽里面,然后一直死循环for
总结
到此这篇关于JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug的文章就介绍到这了,更多相关JDK1.8 ConcurrentHashMap computeIfAbsent死循环内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

