是否在Java中锁定了Atomic compareAndSet方法?

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

如果我有类似的东西:

AtomicReference<String> atomicReference = new AtomicReference<>("abc");

我有2个执行代码的线程:

线程1: atomicReference.compareAndSet("abc", "def")

线程2: atomicReference.compareAndSet("abc", "efg")

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

java multithreading concurrency atomic
3个回答
0
投票

[通常,合理的实现不会为原子compareAndSet使用锁。一些旧的/非常低端的32位体系结构可能会对AtomicLong使用锁。

方法主体(某些体系结构)可能一次允许一个以上的线程执行,但只有一个可以成功。


0
投票

也许两个线程可能同时执行。但是总是只有一个“赢家”,只有一个会成功。


-1
投票

摘自文档:

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