📌  相关文章
📜  Java中的 AtomicReferenceArray compareAndExchange() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:44.142000             🧑  作者: Mango

Java中的 AtomicReferenceArray compareAndExchange() 方法及示例

在Java中,AtomicReferenceArray类提供了一种原子性的数组操作方式。其中的compareAndExchange()方法可以用于原子地比较并替换数组中的元素。本文将介绍AtomicReferenceArray compareAndExchange()方法的用法,并提供示例代码。

compareAndExchange()方法概述

compareAndExchange()方法是AtomicReferenceArray类的一个原子操作方法,用于比较并替换数组中的指定位置的元素。它的方法签名如下:

public final boolean compareAndExchange(int i, E expectedValue, E newValue)

参数说明:

  • i:要操作的数组位置
  • expectedValue:期望的旧值
  • newValue:要替换的新值

返回值:如果旧值与期望的值相等,则将新值替换旧值并返回true;否则不执行替换并返回false

示例代码

下面是一个使用compareAndExchange()方法的示例代码,展示了如何原子地比较并替换数组中的元素。

import java.util.concurrent.atomic.AtomicReferenceArray;

public class AtomicReferenceArrayExample {
    public static void main(String[] args) {
        AtomicReferenceArray<Integer> atomicArray = new AtomicReferenceArray<>(new Integer[]{1, 2, 3, 4, 5});

        int index = 2;
        int expectedValue = 3;
        int newValue = 6;

        boolean swapped = atomicArray.compareAndExchange(index, expectedValue, newValue);
        System.out.println("Swapped: " + swapped);
        System.out.println("Array after compareAndExchange: " + atomicArray);
    }
}

在上述示例代码中,我们创建了一个包含整数的AtomicReferenceArray对象。然后,我们选择想要替换的数组位置index、期望的旧值expectedValue和要替换的新值newValue。最后,我们调用compareAndExchange()方法进行比较并替换操作。

运行以上示例代码,可能的输出结果为:

Swapped: true
Array after compareAndExchange: [1, 2, 6, 4, 5]

输出结果表明,成功比较并替换了数组位置为2的元素,将其原本的值3替换为了新值6。

以上是关于Java中的AtomicReferenceArray compareAndExchange()方法及示例的介绍,通过该方法,我们可以安全地进行数组元素的比较和替换操作,并确保线程安全。