AtomicLongArray 原子长整型数组
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()
方法。
这是调用AtomicLongArray的
compareAndSet()`方法的方式:
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类,以了解有关这些方法的更多信息。