Java中的Atomic compareAndSet函数是否有锁定?

问题描述 投票:0回答:2

如果我有类似的东西:

[AtomicReference atomicReference =新的AtomicReference <>(“ abc”);

我有2个线程:

执行代码:

线程1:atomicReference.compareAndSet(“ abc”,“ def”)线程2:atomicReference.compareAndSet(“ abc”,“ efg”)

[在某些情况下,两个线程同时执行此操作并找到已声明的值“ abc”并都执行该方法还是如果一个线程执行compareandset另一个线程必须等到它完成(基本上是某种锁定机制)?

java multithreading concurrency atomic
2个回答
0
投票

[在某些情况下,两个线程同时执行此操作并找到已声明的值“ abc”并都执行该方法,或者如果一个线程执行compareandset则必须等到它完成(基本上是某种锁定)机制)?

AtomicReference.compareAndSet处理两个线程尝试同时更新引用的可能性。 CAS将以任意顺序执行,因此只有其中一个会成功。


0
投票

摘自文档:

Package java.util.concurrent.atomic

类的小型工具包,支持对单个变量进行无锁线程安全编程。

© www.soinside.com 2019 - 2024. All rights reserved.