我正在学习Java并发集合(java.util.concurrent
)和所使用的基础技术。我偶然发现了“写时复制”和“比较并交换”。
我不太明白这两者之间有什么区别。还是两者一起使用?
最佳答案
两者都是并发集合,但是它们使用不同的机制。
写入时复制集合使用有效的不可变数组,任何修改都会创建一个新数组。在创建新阵列的过程中,他们短暂地使用了同步。如果读取在写入操作中占主导地位,则它们是很好的。
相反,其他一些并发集合使用Compare-And-Swap(所谓的CAS)机制进行并发控制。它是基于低级CPU指令构建的,这是对传统同步的根本改进。
关于java - 写时复制和比较然后交换之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62534256/