如果我有类似的东西:
[AtomicReference atomicReference =新的AtomicReference <>(“ abc”);
我有2个线程:
执行代码:
线程1:atomicReference.compareAndSet(“ abc”,“ def”)线程2:atomicReference.compareAndSet(“ abc”,“ efg”)
[在某些情况下,两个线程同时执行此操作并找到已声明的值“ abc”并都执行该方法还是如果一个线程执行compareandset另一个线程必须等到它完成(基本上是某种锁定机制)?
[在某些情况下,两个线程同时执行此操作并找到已声明的值“ abc”并都执行该方法,或者如果一个线程执行compareandset则必须等到它完成(基本上是某种锁定)机制)?
AtomicReference.compareAndSet
处理两个线程尝试同时更新引用的可能性。 CAS将以任意顺序执行,因此只有其中一个会成功。
摘自文档:
Package java.util.concurrent.atomic
类的小型工具包,支持对单个变量进行无锁线程安全编程。