Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Короткий ответ: Нет.
От java.util.concurrent.atomic документ пакета:
эффекты памяти для доступов и обновлений атомной энергетики обычно следуют правилам для летучих веществ:
get
имеет эффекты памяти чтенияvolatile
переменная.set
имеет эффекты памяти записи (присвоения)volatile
переменная.
Между прочим, документ для пакета очень хорош, и все объяснено...
<час> lazySet
(представленный в Java 6) более новая операция, представленная, который имеет семантику, недостижимую до volatile
переменные; см. это сообщение для получения дополнительной информации.
Нет, нет.
дополнительное питание, обеспеченное AtomicReference, является compareAndSet () метод и друзья. Если Вам не нужны те методы, энергозависимая ссылка обеспечивает ту же семантику как AtomicReference.set () и .get ().
AtomicReference обеспечивает дополнительную функциональность, которую не обеспечивает простая энергозависимая переменная. Поскольку Вы считали API, Вы будете знать это, но он также обеспечивает блокировку, которая может быть полезна для некоторых операций.
Однако, если Вам не нужна эта дополнительная функциональность, я предлагаю, чтобы Вы использовали простое энергозависимое поле.