Я использовал AtomicLong много раз, но мне никогда не приходилось использовать AtomicReference
Похоже, что AtomicReference тоже (я скопировал этот код из другого стекового потока
вопрос):
public synchronized boolean compareAndSet(List<Object> oldValue, List<Object> newValue) {
if (this.someList == oldValue) {
// someList could be changed by another thread after that compare,
// and before this set
this.someList = newValue;
return true;
}
return false;
}
или
public synchronized boolean compareAndSet(List<Object> oldValue, List<Object> newValue) {
if (this.someList == oldValue || this.someList.equals(oldValue)) {
// someList could be changed by another thread after that compare,
// and before this set
this.someList = newValue;
return true;
}
return false;
}
Предположим, этот.someList помечен как изменчивый.
Я не совсем уверен, какой именно, потому что javadoc и код для этого класса не ясны, если используется .equals.
Видя, что вышеприведенные методы не так уж сложно написать, кто-нибудь когда-либо использовал AtomicReference?