Есть две основные причины, по которым вы можете использовать атомное логическое значение.Во-первых, его изменяемый, вы можете передать его как ссылку и изменить значение, связанное с самим логическим значением, например.
public final class MyThreadSafeClass{
private AtomicBoolean myBoolean = new AtomicBoolean(false);
private SomeThreadSafeObject someObject = new SomeThreadSafeObject();
public boolean doSomething(){
someObject.doSomeWork(myBoolean);
return myBoolean.get(); //will return true
}
}
и в классе someObject
public final class SomeThreadSafeObject{
public void doSomeWork(AtomicBoolean b){
b.set(true);
}
}
Что еще более важно, его потокобезопасен и может указывать разработчикам, поддерживающим класс, что эта переменная, как ожидается, будет изменена и прочитана из нескольких потоков.Если вы не используете AtomicBoolean, вы должны синхронизировать используемую вами булеву переменную, объявив ее энергозависимой или синхронизируя чтение и запись поля.