【发布时间】:2020-08-24 23:21:33
【问题描述】:
我在理解这个概念方面几乎没有问题。请纠正我的错误。
基本上,迭代会生成原始数组的快照(副本),因此修改集合的线程不会影响我们的迭代,因为迭代使用副本。所以这里没有 ConcurrentException,很好。
但后来我还读到,任何修改都是通过制作原始集合的副本并使用该副本进行更改来完成的。然后将其设置为原始值。
当迭代已经使用它自己的副本时,有人可以告诉我为什么在修改时需要制作副本。为什么有 2 个应付,一个用于读取,一个用于写入?
我想我说错了,所以请你指出我错过了什么?
【问题讨论】:
标签: java concurrency snapshot copy-on-write