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?