📅  最后修改于: 2023-12-03 14:42:43.885000             🧑  作者: Mango
在Java中,AtomicIntegerArray
是一个提供了原子操作的数组类。其中的getAndDecrement()
方法可以原子性地获取特定位置的元素并将其减1。该方法的返回值为该位置的原值。
public final int getAndDecrement(int i)
i
:要减少值的位置的索引(从零开始)。方法执行前的位置i处的原值。
import java.util.concurrent.atomic.AtomicIntegerArray;
public class AtomicIntegerArrayDemo {
public static void main(String[] args) {
AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(new int[]{0, 1, 2, 3, 4});
int index = 3;
int originalValue = atomicIntegerArray.getAndDecrement(index);
int newValue = atomicIntegerArray.get(index);
System.out.println("原值:" + originalValue); //输出:原值:3
System.out.println("新值:" + newValue); //输出:新值:2
}
}
在上面的示例中,我们首先创建了一个长度为5的AtomicIntegerArray
对象,其中的元素值从0到4。然后,我们调用getAndDecrement()
方法来原子性地获取位置3的元素,并将其减1,最后输出了该位置原值和现值。
getAndDecrement()
方法是一个原子操作,即执行该方法时,线程将对其它线程不可见,但对于线程自己而言,其结果仍然对其它线程可见。这可以避免由于多线程操作同一个位置而导致的数据不一致的问题。