AtomicIntegerArray 原子整数数组
JavaAtomicIntegerArray
类(java.util.concurrent.atomic.AtomicIntegerArray
)表示一个int
数组。 AtomicIntegerArray中的int元素可以原子更新。 AtomicIntegerArray还支持比较和交换函数。
创建一个AtomicIntegerArray
我们可以使用两个构造函数之一创建一个AtomicIntegerArray。
第一个构造函数采用" int"作为参数。这个int指定要创建的AtomicIntegerArray的长度,这意味着它应该有多少个元素。这是一个使用此构造函数创建AtomicIntegerArray
的Java示例:
AtomicIntegerArray array = new AtomicIntegerArray(10);
此示例创建一个容量为10个int的AtomicIntegerArray(它具有10个int元素的空间)。
第二个构造函数采用一个" int []"数组作为参数。使用此构造函数创建的AtomicIntegerArray
将具有与array参数相同的容量,并且该array参数中的所有元素都将被复制到AtomicIntegerArray
中。这是一个使用此构造函数创建AtomicIntegerArray
的Java示例:
int[] ints = new int[10]; ints[5] = 123; AtomicIntegerArray array = new AtomicIntegerArray(ints);
此示例首先创建一个" int []"数组,并为索引为5的元素设置一个值。然后,它以" int []"数组作为参数创建一个" AtomicIntegerArray"。
得到()
我们可以使用AtomicIntegerArray上的get()方法来获取给定元素的值。这是显示调用get()方法外观的示例:
int value = array.get(5);
放()
我们可以使用AtomicIntegerArray上的set()方法来设置给定元素的值。这是显示调用set()方法外观的示例:
array.set(5, 999);
compareAndSet()
compareAndSet()方法用于将给定元素的值与指定值进行比较,如果两个值相等,则为该元素设置一个新值。这是" AtomicIntegerArray"支持原子比较和交换函数的示例。一次只能有一个线程可以执行compareAndSet()
方法。
这是调用AtomicIntegerArray的compareAndSet()方法的方式:
boolean swapped = array.compareAndSet(5, 999, 123);
本示例将索引为5的元素与期望值999进行比较,如果相等,则为索引为5的元素设置新值123. compareAndSet()方法返回布尔值值为true的布尔值。元素设置了一个新值,否则设置为" false"(如果该元素没有期望值)。
addAndGet()
" AtomicIntegerArray"还包含一种方法,可用于将值添加到给定元素,并返回该元素的新值。调用addAndGet()也是一个原子操作(就像对AtomicIntegerArray的所有操作一样)。这是调用addAndGet()
的示例:
int newValue = array.addAndGet(5, 3);
执行完此代码后," newValue"变量将包含索引为5的元素的值,并添加3.
getAndAdd()
AtomicIntegerArray类还包含一个名为getAndAdd()的方法。 getAndAdd()方法的作用与addAndGet()方法相同,不同之处在于getAndAdd()方法会在元素添加值之前返回该元素的值。这是一个" getAndAdd()"示例:
int oldValue = array.getAndAdd(5, 3);
执行完此代码后,在将值3添加到变量之前," oldValue"变量将包含索引为5的元素的旧值。
crementAndGet()
incrementAndGet()
方法将给定元素的值递增(加1),并返回该元素的新值。这是一个" incrementAndGet()"示例:
int newValue = array.incrementAndGet(5);
执行完此代码后," newValue"变量将包含索引为5的元素的值,并添加1.
getAndIncrement()
AtomicIntegerArray类还包含一个名为getAndIncrement()的方法。 " getAndIncrement()"方法与" incrementAndGet()"方法相同,不同之处在于" getAndIncrement()"方法在元素递增之前返回元素的值。这是一个getAndIncrement()
示例:
int oldValue = array.getAndIncrement(5);
执行完此代码后,oldValue
变量将包含索引为5的元素的旧值,然后将其递增(已添加1)。
decrementAndGet()
decrementAndGet()
方法递减(减去1)为给定元素的值,并返回该元素的新值。这是一个decrementAndGet()
的例子:
int newValue = array.decrementAndGet(5);
执行此代码后," newValue"变量将包含索引为5的元素的值,并减去1.
getAndDecrement()
AtomicIntegerArray类还包含一个名为getAndDecrement()的方法。 getAndDecrement()方法的作用与DecrementAndGet()方法相同,不同之处在于getAndDecrement()方法会在元素递减之前返回其值。这是一个getAndDecrement()
示例:
int oldValue = array.getAndDecrement(5);
执行完这段代码后,变量" oldValue"将包含索引为5的元素的旧值,然后将其递减(从中减去1)。
添加方法
" AtomicIntegerArray"还有其他几种方法可以用于特殊目的。我们应该查看JavaDoc中的AtomicIntegerArray类,以了解有关这些方法的更多信息。