📅  最后修改于: 2023-12-03 15:16:20.517000             🧑  作者: Mango
Java中的AtomicReferenceArray类是一个原子数组类,它提供了对数组元素进行原子操作的支持。其中的compareAndSet()方法是其中的一个常用方法。这个方法可以用于检查给定位置上的值是否等于预期值,并在满足条件时将该位置的值原子替换为新值。其语法如下:
public final boolean compareAndSet(int i, E expect, E update)
参数说明:
如果当前位置上的值等于预期值,则该方法修改位置上的值并返回true。如果当前位置上的值不等于预期值,则不修改该位置的值并返回false。
下面是一个使用AtomicReferenceArray compareAndSet()方法的示例:
import java.util.concurrent.atomic.AtomicReferenceArray;
public class Main {
public static void main(String[] args) {
String[] array = {"one", "two", "three", "four", "five"};
AtomicReferenceArray<String> atomicArray = new AtomicReferenceArray<>(array);
// 将下标为2位置的值替换为"3"
boolean result = atomicArray.compareAndSet(2, "three", "3");
System.out.println("替换结果:" + result);
System.out.println("替换后的数组:" + atomicArray);
// 将下标为4位置的值替换为"six"
result = atomicArray.compareAndSet(4, "four", "six");
System.out.println("替换结果:" + result);
System.out.println("替换后的数组:" + atomicArray);
// 将下标为1位置的值替换为"3",但预期值是"two",因此不会替换成功
result = atomicArray.compareAndSet(1, "two", "3");
System.out.println("替换结果:" + result);
System.out.println("替换后的数组:" + atomicArray);
}
}
运行结果:
替换结果:true
替换后的数组:[one, two, 3, four, five]
替换结果:true
替换后的数组:[one, two, 3, four, six]
替换结果:false
替换后的数组:[one, two, 3, four, six]
从上面的示例代码和执行结果可以看出,AtomicReferenceArray compareAndSet()方法可以用于原子替换数组的元素值,可以有效地避免多线程的竞争问题。同时在使用这个方法时,需要注意预期值的正确性,这样才能保证替换操作的成功性。