java.util.concurrent.atomic.AtomicLongFieldUpdater
java.util.concurrent.atomic.AtomicIntegerFieldUpdater
java.util.concurrent.atomic.AtomicReferenceFieldUpdater
static 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");
}