并发编程--AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray

来源:互联网 发布:步惊云 知乎 编辑:程序博客网 时间:2024/06/06 01:16

AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray是对数组的线程安全操作,简单来说其操作方式是使用sun.misc.Unsafe来对数组对象进行CAS原子操作。

AtomicIntegerArray数组对象:

 private final int[] array;

添加操作为:

 public final void set(int i, int newValue) {        unsafe.putIntVolatile(array, checkedByteOffset(i), newValue);    }

AtomicLongArray数组对象:

private final long[] array;

添加操作为:

public final void set(int i, long newValue) {        unsafe.putLongVolatile(array, checkedByteOffset(i), newValue);    }

AtomicReferenceArray数组对象:

private final Object[] array;
添加操作为:

public final void set(int i, E newValue) {        unsafe.putObjectVolatile(array, checkedByteOffset(i), newValue);    }
总结:简单来说还是使用sun.misc.Unsafe通过CAS操作来完成线程安全的数组操作。



0 0