Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как работает AtomicReference ?


Автор: AntUser 27.11.2011, 00:11
Объясните, зачем надо и как правильно пользовать?
Спасибо!

Автор: Stolzen 27.11.2011, 06:37
Пример использования (из Effective java, item 74):

Код
private final AtomicReference<State> init = new AtomicReference<State>(State.NEW);
...
protected final void initialize(...) {
    if (!init.compareAndSet(State.NEW, State.INITIALIZING)) {
        throw new IllegalStateException("Already initialized");
    }
    ...
    init.set(State.INITIALIZED);
}


В этом примере используется для обеспечения атомарности операции проверки ссылки и установки ее в новое значение. 
Чтобы не получилось так, что один поток проверил ссылку и установил ее в одно значение, а второй поток одновременно с первым проверил ссылку, но установил ее в третье значение.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)