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"); }