What is a usecase for Java AtomicReference#getAndSet? In other words, is it correct assumption, that if the only method from AtomicReference that I use in my code is AtomicReference#getAndSet, then I do not need AtomicReference at all, just a volatile variable would be enough?
For example, if I have the next code:
private final AtomicReference<String> string = new AtomicReference<>("old");
public String getAndSet() {
return string.getAndSet("new");
}
, isn't it always doing exactly the same as
private volatile String string = "old";
public String getAndSet() {
String old = string;
string = "new";
return old;
}
from the caller's point of view?