CopyOnWriteArrayList 做得很好。我可以同时从多个线程读取,但我可以从 1 个线程更新。它的工作方式是写入使用数组的单独副本,更新信息并将其设置回原始数组。
问题是:既然写操作使用单独的副本,他们怎么不能并行呢?由于它们现在在不同的阵列中工作,因此不会有任何干扰。因此,无论谁写第一个,它都会将这些新更新设置为原始数组。那么为什么 Java 只允许一次写入呢?
我在这里遗漏了什么,为什么只能写 1 个线程?
CopyOnWriteArrayList 做得很好。我可以同时从多个线程读取,但我可以从 1 个线程更新。它的工作方式是写入使用数组的单独副本,更新信息并将其设置回原始数组。
问题是:既然写操作使用单独的副本,他们怎么不能并行呢?由于它们现在在不同的阵列中工作,因此不会有任何干扰。因此,无论谁写第一个,它都会将这些新更新设置为原始数组。那么为什么 Java 只允许一次写入呢?
我在这里遗漏了什么,为什么只能写 1 个线程?