AtomicReferenceFieldUpdater:
1)一个用于更新指定类的声明为volatile类型的属性进行原子性更新。
2)通过调用AtomicReferenceFieldUpdater的静态方法newUpdater创建实例,如下:
/** * 参数说明: * 第一个参数:包含要更新属性的类类型 * 第二个参数:更新属性所属类型 * 第三个参数:更新属性的名称 */ private static final AtomicReferenceFieldUpdater<TomcatTest,String> attachmentUpdater = AtomicReferenceFieldUpdater.newUpdater(TomcatTest.class, String.class, "userName");
注:在看tomcat8源码nio请求处理模式时,看到由此应用!!
3)例子如下:
public class TomcatTest { private volatile String userName; public void setUserName(String userName) { this.userName = userName; } public String getUserName() { return userName; } /** * 参数说明: * 第一个参数:包含要更新属性的类类型 * 第二个参数:更新属性所属类型 * 第三个参数:更新属性的名称 */ private static final AtomicReferenceFieldUpdater<TomcatTest,String> attachmentUpdater = AtomicReferenceFieldUpdater.newUpdater(TomcatTest.class, String.class, "userName"); public static void main(String[] args) { TomcatTest test = new TomcatTest(); test.setUserName("hello"); attachmentUpdater.getAndSet(test,"world"); System.out.println(test.getUserName()); } } 输出:world