哪些 AtomicInteger 方法是测试和设置、获取和添加以及比较和交换(就无锁算法而言)?



CAS (compare-and-swap( :boolean compareAndSet(int expect, int update)

FAA(获取和添加( :int addAndGet(int delta)???

TAS (测试和设置( : ???

在我的理解中:

CAS(比较和交换("同步"(在 CPU 指令级别没有锁(代码,如下所示:

if(a==b) {
a++;  // or a = a + 7;
}

FAA(获取和添加(:"同步"(无锁,在CPU指令级别(代码,如下所示:

x = x + 7;

但我不确定"测试和设置"与什么样的代码有关。

Test-and-set 是一个原子 RMW 操作,它将内存位置的值设置为1并返回旧值(10(。

Java 中没有"真正的"测试和设置操作,但您可以通过将1传递给AtomicInteger::getAndSet并期望它返回10来模拟它。或者,您可以通过将true传递给AtomicBoolean::getAndSet并期望truefalse来模拟 TAS。

在您提供的增量变量的示例中,它不是很有用,因为 TAS 是二进制操作。

相关内容

  • 没有找到相关文章

最新更新