AtomicLongArray 原子长整型数组

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

JavaAtomicLongArray类(java.util.concurrent.atomic.AtomicLongArray)表示long的数组。可以原子地更新AtomicLongArray中的long元素。 " AtomicLongArray"还支持比较和交换函数。

创建一个AtomicLongArray

我们可以使用两个构造函数之一创建一个AtomicLongArray。

第一个构造函数采用" int"作为参数。这个int指定要创建的AtomicLongArray的长度,这意味着它应该有多少个元素。这是一个使用此构造函数创建AtomicLongArray的Java示例:

AtomicLongArray array = new AtomicLongArray(10);

本示例创建一个容量为10个" longs"的" AtomicLongArray"(它具有10个" long"元素的空间)。

第二个构造函数采用一个long []数组作为参数。使用此构造函数创建的" AtomicLongArray"将具有与array参数相同的容量,并且该array参数中的所有元素都将被复制到" AtomicLongArray"中。这是一个使用此构造函数创建AtomicLongArray的Java示例:

long[] longs = new long[10];

longs[5] = 123;

AtomicLongArray array = new AtomicLongArray(longs);

这个例子首先创建一个" long []"数组,并为索引为5的元素设置一个值。然后,它创建一个以" long []"数组作为参数的" AtomicLongArray"。

得到()

我们可以使用AtomicLongArray上的get()方法获取给定元素的值。这是显示调用get()方法外观的示例:

long value = array.get(5);

放()

我们可以使用AtomicLongArray上的set()方法来设置给定元素的值。这是显示调用set()方法外观的示例:

array.set(5, 999);

compareAndSet()

compareAndSet()方法用于将给定元素的值与指定值进行比较,如果两个值相等,则为该元素设置一个新值。这是" AtomicLongArray"支持原子比较和交换函数的示例。一次只能有一个线程可以执行compareAndSet()方法。

这是调用AtomicLongArraycompareAndSet()`方法的方式:

boolean swapped = array.compareAndSet(5, 999, 123);

本示例将索引为5的元素与期望值999进行比较,如果相等,则为索引为5的元素设置新值123. compareAndSet()方法返回布尔值值为true的布尔值。元素设置了一个新值,否则设置为" false"(如果该元素没有期望值)。

addAndGet()

" AtomicLongArray"还包含一种方法,可用于向给定元素添加值,并返回该元素的新值。调用addAndGet()也是一个原子操作(就像对AtomicLongArray的所有操作一样)。这是调用addAndGet()的示例:

long newValue = array.addAndGet(5, 3);

执行完此代码后," newValue"变量将包含索引为5的元素的值,并添加3.

getAndAdd()

AtomicLongArray类还包含一个名为getAndAdd()的方法。 getAndAdd()方法的作用与addAndGet()方法相同,不同之处在于getAndAdd()方法会在元素添加值之前返回该元素的值。这是一个" getAndAdd()"示例:

long oldValue = array.getAndAdd(5, 3);

执行完此代码后,在将值3添加到变量之前," oldValue"变量将包含索引为5的元素的旧值。

crementAndGet()

incrementAndGet()方法将给定元素的值递增(加1),并返回该元素的新值。这是一个" incrementAndGet()"示例:

long newValue = array.incrementAndGet(5);

执行完此代码后," newValue"变量将包含索引为5的元素的值,并添加1.

getAndIncrement()

AtomicLongArray类还包含一个名为getAndIncrement()的方法。 " getAndIncrement()"方法与" incrementAndGet()"方法相同,不同之处在于" getAndIncrement()"方法在元素递增之前返回元素的值。这是一个getAndIncrement()示例:

long oldValue = array.getAndIncrement(5);

执行完此代码后,oldValue变量将包含索引为5的元素的旧值,然后将其递增(已添加1)。

decrementAndGet()

decrementAndGet()方法递减(减去1)为给定元素的值,并返回该元素的新值。这是一个decrementAndGet()的例子:

long newValue = array.decrementAndGet(5);

执行此代码后," newValue"变量将包含索引为5的元素的值,并减去1.

getAndDecrement()

AtomicLongArray类还包含一个名为getAndDecrement()的方法。 getAndDecrement()方法的作用与DecrementAndGet()方法相同,不同之处在于getAndDecrement()方法会在元素递减之前返回其值。这是一个getAndDecrement()示例:

long oldValue = array.getAndDecrement(5);

执行完这段代码后,变量" oldValue"将包含索引为5的元素的旧值,然后将其递减(从中减去1)。

添加方法

" AtomicLongArray"还有其他几种方法可以用于特殊目的。我们应该查看JavaDoc中的AtomicLongArray类,以了解有关这些方法的更多信息。