AtomicReferenceFieldUpdater一个基于反射的工具类,它能对指定类的指定的volatile引用字段进行原子更新。(注意这个字段不能是private的)
通过调用AtomicReferenceFieldUpdater的静态方法newUpdater就能创建它的实例,该方法要接收三个参数:
- 包含该字段的对象的类
- 将被更新的对象的类
- 将被更新的字段的名称
下面是例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class App { public static void main(String[] args) throws Exception { AtomicReferenceFieldUpdater updater=AtomicReferenceFieldUpdater.newUpdater(Dog.class,String.class,"name"); Dog dog1=new Dog(); updater.compareAndSet(dog1,dog1.name,"test") ; System.out.println(dog1.name); } } class Dog { volatile String name="dog1"; }
|
结果输出是: