两段几乎一模一样的话,是否可以删除其中一段【as-算法存在哪些问题☞只能保证一个共享变量的原子操作】
fox-half-tian opened this issue · 1 comments
🏠 [Java并发常见面试题总结(中)- cas-算法存在哪些问题☞只能保证一个共享变量的原子操作 | JavaGuide](https://javaguide.cn/java/concurrent/java-concurrent-questions-02.html#%E5%8F%AA%E8%83%BD%E4%BF%9D%E8%AF%81%E4%B8%80%E4%B8%AA%E5%85%B1%E4%BA%AB%E5%8F%98%E9%87%8F%E7%9A%84%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)
原文如下:
CAS 只对单个共享变量有效,当操作涉及跨多个共享变量时 CAS 无效。但是从 JDK 1.5 开始,提供了
AtomicReference
类来保证引用对象之间的原子性,你可以把多个变量放在一个对象里来进行 CAS 操作.所以我们可以使用锁或者利用AtomicReference
类把多个共享变量合并成一个共享变量来操作。CAS 操作仅能对单个共享变量有效。当需要操作多个共享变量时,CAS 就显得无能为力。不过,从 JDK 1.5 开始,Java 提供了
AtomicReference
类,这使得我们能够保证引用对象之间的原子性。通过将多个变量封装在一个对象中,我们可以使用AtomicReference
来执行 CAS 操作。除了
AtomicReference
这种方式之外,还可以利用加锁来保证。
原文中红色框框与绿色框框的文字与所要表达的意思几乎一模一样,这是否可以删掉其中一个框框?还是说这是为了以不同的表达方式来更好理解“为什么 cas 只能保证一个共享变量的原子操作”(但这两段话真的就一模一样🤔)
CAS 只对单个共享变量有
感谢指出,这部分当时提供了两个版本,但忘记删除其中的一个版本了。