Back to Intellij Community

AtomicFieldUpdaterNotStaticFinal

java/java-impl/resources/inspectionDescriptions/AtomicFieldUpdaterNotStaticFinal.html

2025.3-rc-2862 B
Original Source

Reports fields of types:

  • java.util.concurrent.atomic.AtomicLongFieldUpdater
  • java.util.concurrent.atomic.AtomicIntegerFieldUpdater
  • java.util.concurrent.atomic.AtomicReferenceFieldUpdater

that are not static final. Because only one atomic field updater is needed for updating a volatile field in all instances of a class, it can almost always be static.

Making the updater final allows the JVM to optimize access for improved performance.

Example:

class Main {
    private volatile int id;
    private AtomicIntegerFieldUpdater<Main> idFieldUpdater = AtomicIntegerFieldUpdater.newUpdater(Main.class, "id");
  }

After the quick-fix is applied:

class Main {
    private volatile int id;
    private static final AtomicIntegerFieldUpdater<Main> idFieldUpdater = AtomicIntegerFieldUpdater.newUpdater(Main.class, "id");
  }