java.util.concurrent.atomic.AtomicLongArray类提供可以原子方式读取和写入的底层long数组的操作,还包含高级原子操作. AtomicLongArray支持底层长数组变量的原子操作.它具有get和set方法,类似于对volatile变量的读写操作.也就是说,一个集合与之前的相关变量的任何后续获取具有先发生关系.原子compareAndSet方法也具有这些内存一致性功能.
AtomicLongArray方法
以下是AtomicLongArray类中可用的重要方法列表.
Sr.No. | 方法&说明 |
---|---|
1 | public long addAndGet(int i,long delta) 以原子方式将给定值添加到索引i处的元素. |
2 | public boolean compareAndSet(int i, long expect, long update) 如果当前值==预期值,则以原子方式将位置i的元素设置为给定的更新值. |
3 | public long decrementAndGet(int i) 原子地将索引i处的元素减1. |
4 | public long get(int i) 获取位置i的当前值. |
5 | public long getAndAdd(int i,long delta) 以原子方式将给定值添加到索引i处的元素. |
6 | public long getAndDecrement(int i) 原子地将索引i处的元素减1. |
7 | public long getAndIncrement(int i) 以原子方式将索引为i的元素加1. |
8 | public long getAndSet(int i,long newValue) 以原子方式将位置i的元素设置为给定值并返回旧值. |
9 | public long incrementAndGet(int i) 原子上将索引为i的元素加1. |
10 | public void lazySet(int i,long newValue) 最终将元素设置在位我到给定的值. |
11 | public int length() 返回数组的长度. |
12 | public void set(int i,long newValue) 将位置i的元素设置为给定价值. |
13 | public String toString() 返回数组当前值的String表示. |
14 | public boolean weakCompareAndSet (int i,long expect,long update) 如果当前值==期望值,则以原子方式将位置i的元素设置为给定的更新值. |
示例
以下TestThread程序显示用法基于线程的环境中的AtomicIntegerArray变量.
import java.util.concurrent.atomic.AtomicLongArray;public class TestThread { private static AtomicLongArray atomicLongArray = new AtomicLongArray(10); public static void main(final String[] arguments) throws InterruptedException { for (int i = 0; i这将产生以下结果.
输出
Thread 9, index 0, value: 2Thread 10, index 0, value: 3Thread 9, index 1, value: 2Thread 9, index 2, value: 2Thread 9, index 3, value: 2Thread 9, index 4, value: 2Thread 10, index 1, value: 3Thread 9, index 5, value: 2Thread 10, index 2, value: 3Thread 9, index 6, value: 2Thread 10, index 3, value: 3Thread 9, index 7, value: 2Thread 10, index 4, value: 3Thread 9, index 8, value: 2Thread 9, index 9, value: 2Thread 10, index 5, value: 3Thread 10, index 6, value: 3Thread 10, index 7, value: 3Thread 10, index 8, value: 3Thread 10, index 9, value: 3Values: 3 3 3 3 3 3 3 3 3 3