📅  最后修改于: 2023-12-03 15:01:50.725000             🧑  作者: Mango
Java中的AtomicLongArray
类提供了一种在多线程环境下进行原子性操作的方式。该类中的getAndAdd(int i, long delta)
方法可以将指定数组下标的元素与delta
进行相加,并返回相加前的值。该操作是原子性的,因此可以避免出现竞态条件。
public final long getAndAdd(int i, long delta)
i
:要进行相加操作的元素的下标delta
:要相加的值import java.util.concurrent.atomic.AtomicLongArray;
public class Main {
public static void main(String[] args) {
long[] initialValues = {0L, 1L, 2L, 3L};
AtomicLongArray array = new AtomicLongArray(initialValues);
// 在下标为1的元素上执行getAndAdd操作
long result = array.getAndAdd(1, 5L);
System.out.println("result = " + result); // 输出 previous value = 1
System.out.println("array = " + array); // 输出 array = [0, 6, 2, 3]
}
}
上述示例中,首先创建了一个长度为4的AtomicLongArray
,并将其初始化为{0, 1, 2, 3}
。然后,在下标为1的元素上执行了getAndAdd
操作,将其原值1与给定值5相加,并返回原值1。最后,输出了操作后的数组array
。可以看到,下标为1的元素变成了6,其它元素不变。