java – 多线程如何破坏Hashmap的内部结构

前端之家收集整理的这篇文章主要介绍了java – 多线程如何破坏Hashmap的内部结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Java 8中,真正不耐烦的Horstmann写道:

If multiple threads modify a plain HashMap,they can destroy the
internal structure. Some of the links may go missing,or even go in
circles,rendering the data structure unusable. (Section 6.2.1)

我可以理解,未同步的并发访问可能会破坏我的数据.如果两个线程都更新相同的值,则可以覆盖另一个.

但为什么以及如何破坏内部存储器结构呢?

解决方法

您正在寻找的答案在 this博文中得到了完美的解释.

如果您仔细阅读它,您将看到竞争条件可能会破坏存储桶中项目之间的指针,从而导致查找变为两个项目之间的无限遍历.

我不确定Java 8的HashMap实现有多少变化,但我怀疑基础知识仍然适用.

我还要补充一点,这个问题不难发现,我实际上已经看到它发生在现实生活系统中!

猜你在找的Java相关文章