📅  最后修改于: 2023-12-03 15:31:49.925000             🧑  作者: Mango
AtomicIntegerArray getAndAdd()
方法及示例在多线程环境下,使用线程安全的数据结构是非常重要的,因为如果多个线程同时对同一个变量进行读写操作,就会导致数据的不一致性,从而出现莫名其妙的异常。Java提供了很多线程安全的数据结构,其中AtomicIntegerArray
就是其中之一。
AtomicIntegerArray
是一个用于保存整型数据的数组,并且这个数组是线程安全的。它提供了很多原子操作方法,其中getAndAdd(int i, int delta)
就是其中之一,用于在给定的索引处将数组原子地加上给定的值,并返回更新前的值。
public final int getAndAdd(int i, int delta)
i
:要操作的索引delta
:要加的值方法返回值为原数组该索引处的值。
import java.util.concurrent.atomic.AtomicIntegerArray;
public class AtomicIntegerArrayExample {
private static AtomicIntegerArray arr = new AtomicIntegerArray(new int[]{1, 2, 3, 4, 5});
public static void main(String[] args) {
int index = 2;
int delta = 2;
int oldValue = arr.getAndAdd(index, delta);
int newValue = arr.get(index);
System.out.println("原来的值:" + oldValue);
System.out.println("现在的值:" + newValue);
}
}
输出:
原来的值:3
现在的值:5
代码解释:
AtomicIntegerArray
对象arr
,包含了5个元素;2
处的值加上2
,并返回原来的值;2
处的值,并打印原来的值和现在的值。getAndAdd()
方法是原子性操作,保证多个线程同时执行时不会有线程安全问题;getAndAdd()
操作时,要保证该数组的确是被多个线程同时访问的,否则就没有必要使用线程安全的AtomicIntegerArray
数组。