Ksh*_*rma 6 java concurrency multithreading java-8
在Java 8 for the Really Impatient霍斯特曼写道:
Java 8 for the Really Impatient
如果多个线程修改普通的HashMap,它们可以破坏内部结构.某些链接可能会丢失,甚至会以圆圈形式出现,从而导致数据结构无法使用.(6.2.1节)
我可以理解,未同步的并发访问可能会破坏我的数据.如果两个线程都更新相同的值,则可以覆盖另一个.
但为什么以及如何破坏内部存储器结构呢?
geo*_*and 12
您正在寻找的答案在本博文中得到了很好的解释.
如果您仔细阅读它,您将看到竞争条件可能会破坏存储桶中项目之间的指针,从而导致查找变为两个项目之间的无限遍历.
我不确定HashMapJava 8 的实现有多少变化,但我怀疑基础知识仍然适用.
HashMap
我还要补充一点,这个问题不难发现,我实际上已经看到它发生在现实生活系统中!
归档时间:
11 年,8 月 前
查看次数:
1468 次
最近记录: