java.util.concurrent.atomic.AtomicLongFieldUpdaterjava.util.concurrent.atomic.AtomicIntegerFieldUpdaterjava.util.concurrent.atomic.AtomicReferenceFieldUpdaterstatic final。
因为在一个类的所有实例中,只需要一个原子字段更新程序来更新 volatile 字段,所以它几乎总是 static。
使更新程序为 final,JVM 就能优化访问以提高性能。
示例:
class Main {
private volatile int id;
private AtomicIntegerFieldUpdater<Main> idFieldUpdater = AtomicIntegerFieldUpdater.newUpdater(Main.class, "id");
}
在应用快速修复后:
class Main {
private volatile int id;
private static final AtomicIntegerFieldUpdater<Main> idFieldUpdater = AtomicIntegerFieldUpdater.newUpdater(Main.class, "id");
}