📅  最后修改于: 2020-11-15 03:55:16             🧑  作者: Mango
java.util.concurrent.atomic.AtomicIntegerArray类提供了对基本int数组的操作,这些操作可以原子方式读写,并且还包含高级原子操作。 AtomicIntegerArray支持对基本int数组变量的原子操作。它具有get和set方法,它们的工作方式类似于对易失性变量的读写。也就是说,一个集合与该变量的任何后续get都具有事前发生的关系。原子compareAndSet方法还具有这些内存一致性功能。
以下是AtomicIntegerArray类中可用的重要方法的列表。
Sr.No. | Method & Description |
---|---|
1 |
public int addAndGet(int i, int delta) Atomically adds the given value to the element at index i. |
2 |
public boolean compareAndSet(int i, int expect, int update) Atomically sets the element at position i to the given updated value if the current value == the expected value. |
3 |
public int decrementAndGet(int i) Atomically decrements by one the element at index i. |
4 |
public int get(int i) Gets the current value at position i. |
5 |
public int getAndAdd(int i, int delta) Atomically adds the given value to the element at index i. |
6 |
public int getAndDecrement(int i) Atomically decrements by one the element at index i. |
7 |
public int getAndIncrement(int i) Atomically increments by one the element at index i. |
8 |
public int getAndSet(int i, int newValue) Atomically sets the element at position i to the given value and returns the old value. |
9 |
public int incrementAndGet(int i) Atomically increments by one the element at index i. |
10 |
public void lazySet(int i, int newValue) Eventually sets the element at position i to the given value. |
11 |
public int length() Returns the length of the array. |
12 |
public void set(int i, int newValue) Sets the element at position i to the given value. |
13 |
public String toString() Returns the String representation of the current values of array. |
14 |
public boolean weakCompareAndSet(int i, int expect, int update) Atomically sets the element at position i to the given updated value if the current value == the expected value. |
以下TestThread程序显示了在基于线程的环境中AtomicIntegerArray变量的用法。
import java.util.concurrent.atomic.AtomicIntegerArray;
public class TestThread {
private static AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(10);
public static void main(final String[] arguments) throws InterruptedException {
for (int i = 0; i
这将产生以下结果。
Thread 10, index 0, value: 2
Thread 10, index 1, value: 2
Thread 10, index 2, value: 2
Thread 11, index 0, value: 3
Thread 10, index 3, value: 2
Thread 11, index 1, value: 3
Thread 11, index 2, value: 3
Thread 10, index 4, value: 2
Thread 11, index 3, value: 3
Thread 10, index 5, value: 2
Thread 10, index 6, value: 2
Thread 11, index 4, value: 3
Thread 10, index 7, value: 2
Thread 11, index 5, value: 3
Thread 10, index 8, value: 2
Thread 11, index 6, value: 3
Thread 10, index 9, value: 2
Thread 11, index 7, value: 3
Thread 11, index 8, value: 3
Thread 11, index 9, value: 3
Values:
3 3 3 3 3 3 3 3 3 3