Java энергозависимая ссылка по сравнению с AtomicReference

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

130
задан Abimaran Kugathasan 14 February 2014 в 17:21
поделиться

3 ответа

Короткий ответ: Нет.

От java.util.concurrent.atomic документ пакета:

эффекты памяти для доступов и обновлений атомной энергетики обычно следуют правилам для летучих веществ:

  • get имеет эффекты памяти чтения volatile переменная.
  • set имеет эффекты памяти записи (присвоения) volatile переменная.

Между прочим, документ для пакета очень хорош, и все объяснено...

<час>

lazySet (представленный в Java 6) более новая операция, представленная, который имеет семантику, недостижимую до volatile переменные; см. это сообщение для получения дополнительной информации.

109
ответ дан 24 November 2019 в 00:25
поделиться

Нет, нет.

дополнительное питание, обеспеченное AtomicReference, является compareAndSet () метод и друзья. Если Вам не нужны те методы, энергозависимая ссылка обеспечивает ту же семантику как AtomicReference.set () и .get ().

40
ответ дан 24 November 2019 в 00:25
поделиться

AtomicReference обеспечивает дополнительную функциональность, которую не обеспечивает простая энергозависимая переменная. Поскольку Вы считали API, Вы будете знать это, но он также обеспечивает блокировку, которая может быть полезна для некоторых операций.

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

2
ответ дан 24 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: