2015-05-06 2 views
1

Может кто-нибудь, пожалуйста, уточнить мои сомнения в AtomicReferences. В качестве модели памяти java-памяти, читаемой &, записи ссылок всегда являются атомной операцией независимо от 32-разрядной или 64-разрядной машины. Итак, в каком сценарии использование AtomicRefernce будет полезно.Зачем использовать AtomicRefernce при чтении и настройке простой справки уже является атомной операцией

+0

Вы посмотрели на Javadoc AtomicReference? Вы найдете ряд методов, которые позволят вам делать другие вещи, а не просто изменять значение ссылки. Это полезно для этих методов. –

+0

@TheLostMind Вопрос не дублируется в этом другом. Названия говорят о том, что, но спрошено другое. В другом вопросе не упоминается модель Java-памяти. –

+1

@ DanielSperry - [this] (http://stackoverflow.com/questions/281132/java-volatile-reference-vs-atomicreference?rq=1) также поможет OP. Связанный с этим вопрос (и связанные с ним) поможет ОП. Если OP имеет более * специфический * вопрос, я его повторно открою – TheLostMind

ответ

0

Есть другие операции, предоставляемые AtomicReference, которые нельзя использовать с нормальными ссылками.

Например, чтобы убедиться, какое значение вашей замене:

ref.compareAndSet(expectedCurrentValue, newValue); 

Чтобы получить последнее значение и заменить чем-то другим:

oldValue = ref.getAndSet(newValue); 

С AtomicReference вы можете сделать эти операции безопасно, даже если несколько потоков пытаются получить доступ к тем же ссылкам.

Смежные вопросы