java - 写时复制和比较然后交换之间的区别?

标签 java multithreading collections concurrency thread-safety

我正在学习Java并发集合(java.util.concurrent)和所使用的基础技术。我偶然发现了“写时复制”和“比较并交换”。
我不太明白这两者之间有什么区别。还是两者一起使用?

最佳答案

两者都是并发集合,但是它们使用不同的机制。
写入时复制集合使用有效的不可变数组,任何修改都会创建一个新数组。在创建新阵列的过程中,他们短暂地使用了同步。如果读取在写入操作中占主导地位,则它们是很好的。
相反,其他一些并发集合使用Compare-And-Swap(所谓的CAS)机制进行并发控制。它是基于低级CPU指令构建的,这是对传统同步的根本改进。

关于java - 写时复制和比较然后交换之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62534256/

相关文章:

Javafx 表加载正确的行数,但加载重复的数据。我错过了什么吗?

java - 具有多个 View 类型的 Recyclerview 相互通信?

java - 没有状态的对象在发布时总是可见吗?

c# - 无法将类型 'int' 隐式转换为 'System.Collections.Generic.List<QuickTest.Stock>'

Java 有序映射

java - 朱尼特 : Generate exportable reports from Junit tests

java - SharedPreferences 返回 null

multithreading - tensorflow 。如何在 GPU 之间分配操作

c# - TPL 能否在多个线程上运行任务?

java - xstream,如何将列表序列化为xml