AtomicIntegerArray 原子整数数组

时间:2020-01-09 10:36:24  来源:igfitidea点击:

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类,以了解有关这些方法的更多信息。