Два метода имеют разные типы возвращаемых значений.
compareAndSet
возвращает boolean
:
true в случае успеха. Ложный возврат означает, что фактическое значение не было равно ожидаемому.
compareAndExchange
возвращает int
:
значение свидетеля, которое будет то же самое, что и ожидаемое значение в случае успеха
, т.е. compareAndSet
указывает, было ли обновлено значение переменной, а compareAndExchange
возвращает текущее значение переменной, что дает вам больше информации.
compareAndSet(1,2)
установит значение атома c integer равным 2
, если предыдущее значение было 1
, и вернет true
в этом случае. В противном случае он не установит значение и вернет false
.
compareAndExchange(1,2)
установит значение целого атома c равным 2
, если предыдущее значение было 1
, и вернет 1
в этом случае. Если предыдущее значение не было 1
, оно не установит значение и вернет текущее (неизменное) значение.