简介:java.util.concurrent.atomic.AtomicIntegerArray类提供了支持int数组的原子更新,还包含高级操作,如变量的读取与写入,保证原子的一致性。
方法:
示例:
下面通过AtomicIntegerArraryTest 程序显示了基于线程的环境中AtomicIntegerArray变量的使用。
import java.util.concurrent.atomic.AtomicIntegerArray;
public class AtomicIntegerArraryTest {
private static AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(10);
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < atomicIntegerArray.length(); i++) {
atomicIntegerArray.set(i, 1);
}
Thread t1 = new Thread(new Increment());
Thread t2 = new Thread(new Compare());
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("Value: ");
for (int i = 0; i < atomicIntegerArray.length(); i++) {
System.out.print(atomicIntegerArray.get(i)+" ");
}
}
static class Increment implements Runnable{
@Override
public void run() {
for (int i = 0; i < atomicIntegerArray.length(); i++) {
int add = atomicIntegerArray.incrementAndGet(i);
System.out.println("Thread "+ Thread.currentThread().getId()
+ ",index "+i+",value:"+add);
}
}
}
static class Compare implements Runnable{
@Override
public void run() {
for (int i = 0; i < atomicIntegerArray.length(); i++) {
boolean swapped = atomicIntegerArray.compareAndSet(i, 2, 3);
if(swapped){
System.out.println("Thread "+Thread.currentThread().getId()
+",index"+i+",value:3");
}
}
}
}
}
结果: