Java volatile reference vs. AtomicReference

Short answer is: No.

From the java.util.concurrent.atomic package documentation. To quote:

The memory effects for accesses and updates of atomics generally follow the rules for volatiles:

  • get has the memory effects of reading a volatile variable.
  • set has the memory effects of writing (assigning) a volatile variable.

By the way, that documentation is very good and everything is explained.


AtomicReference::lazySet is a newer (Java 6+) operation introduced that has semantics unachievable through volatile variables. See this post for more information.

Leave a Comment