Is there any difference between a volatile Object reference and AtomicReference in case I would just use get() and set()-methods from AtomicReference?
volatile
AtomicReference
get()
set()
Short answer is: No.
From the java.util.concurrent.atomic package documentation. To quote:
java.util.concurrent.atomic
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.
The memory effects for accesses and updates of atomics generally follow the rules for volatiles:
get
set
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.
AtomicReference::lazySet
2.1m questions
2.1m answers
60 comments
57.0k users