1. 基本类型
AtomicBooleanAtomicIntegerAtomicLong
常用方法有:
addAndGet(delte):更新操作,返回结果compareAndSet(expect, update):CAS操作getAndSet(newValue):原子赋值,返回旧值getAndIncrement():自增操作lazySet(newValue):赋值后的一小段时间内,其它线程还是可以读到旧的值。2. 数组
AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray
常用方法为:
AtomicReference:原子更新引用类型,用于一次更新多个字段AtomicReferenceFieldUpdaterAtomicMarkableReference
使用示例:
AtomicReference<User> atom = new AtomicReference<>();User oldOne = new User("Old");User newOne = new User("New");atom.set(oldOne); // bind dataatom.compareAndSet(oldOne, newOne); // CAS updatenewOne = atom.get(); // use updated data
4. 字段
AtomicIntegerFieldUpdater:必须用public volatile修饰符才能原子性地更改字段AtomicLongFieldUpdaterAtomicStampedFieldUpdaterAtomicReferenceFieldUpdater<br />
使用示例:
AtomicIntegerFieldUpdater<User> atom = AtomicIntegerFieldUpdater.newUpdater(User.class, "age");User cobe = new User(10);atom.getAndIncrement(cobe);atom.get(cobe); // will be 11class User{ public volatile age; getAge(); setAge(); }
