В чем разница между изменчивой переменной и атомной переменной? - PullRequest
1 голос
/ 15 марта 2012

Являются ли они одинаковыми, если мы только что рассмотрели методы get / set? Или сказать, являются ли следующие две части кода эквивалентными?

private volatile boolean a;
public boolean isA(){
    return a;
}
public void setA(boolean a){
    this.a = a;
}


private AtomicBoolean a;
public boolean isA(){
    return a.get();
}
public void setA(boolean a){
    this.a.set(a);
}

1 Ответ

7 голосов
/ 15 марта 2012

Преимуществом классов Atomic * являются их атомарные методы, такие как 'getAndSet ()' или 'compareAndSet ()', которые в противном случае потребовали бы блокировки.

Если у вас нет сложных действий, напримерхотите убедиться, что все потоки видят последнее значение 'a', тогда достаточно volatile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...