<p>Is there any difference between a <code>volatile</code> Object reference and <code>AtomicReference</code> in case I would just use <code>get()</code> and <code>set()</code>-methods from <code>AtomicReference</code>?</p>

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.