Java 原子类
时间: 2018/6/30 7:47:28
参考:
Java 原子类¶
通过CompareAndSet的方式实现数据的原子变更,避免多线程情况下出现问题。
原子变量¶
- AtomicInteger
- AtomicLong
- AtomicBoolean
- AtomicReference
代码示例:
AtomicReference<TestInteger> reference = new AtomicReference<TestInteger>();
TestInteger newTest = new TestInteger();
reference.compareAndSet(testInteger, newTest);
原子数组¶
- AtomicIntegerArray
- AtomicLongArray
- AtomicReferenceArray
代码示例:
AtomicIntegerArray integerArray = new AtomicIntegerArray(10);
integerArray.addAndGet(1, 10);
原子字段¶
基于反射机制实现
- AtomicIntegerFieldUpdater
- AtomicLongFieldUpdater
- AtomicReferenceFieldUpdater
代码示例:
public static void main(String[] args) {
AtomicIntegerFieldUpdater<TestInteger> ageUpdater = AtomicIntegerFieldUpdater.newUpdater(TestInteger.class, "age");
TestInteger testInteger = new TestInteger();
ageUpdater.addAndGet(testInteger, 100);
System.out.println(ageUpdater.get(testInteger));
}
private static class TestInteger {
volatile int age = 100;
}