如果我有类似的东西:
AtomicReference<String> atomicReference = new AtomicReference<>("abc");
我有 2 个线程执行代码:
线程 1: atomicReference.compareAndSet("abc", "def")
线程2: atomicReference.compareAndSet("abc", "efg")
是否存在两个线程同时执行该方法并找到声明的值“abc”并且都执行该方法的情况 或者如果一个线程执行compareandset,其他线程将必须等待它完成(基本上是某种锁定机制)?
最佳答案
一般来说,合理的实现不会对原子compareAndSet
使用锁。一些旧的/非常低端的 32 位架构可能会使用 AtomicLong
锁。
方法体可能(某些架构)允许同时由多个线程执行,但只有一个线程可以成功。
关于java - Java中的原子compareAndSet方法是否有锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61047870/