java如何在设置AtomicBoolean之前检查另一个条件?
我有一个原子布尔值,如果另一个条件也是真的,我想设置它:
例如,我们有一个带有活动和Saldo字段的银行账户。在方法设置活动中,我必须检查Saldo字段是否完全为零,然后将活动字段设置为false
这是我的解决方案,但我不确定这是否真的有效
private final AtomicBoolean active = new AtomicBoolean(true);
private final AtomicReference<Double> saldo = new AtomicReference<>(0.0);
@Override
public boolean setInctive() {
//First: check if saldo is 0.0
//Second: set active to false
saldo.getAndUpdate(aDouble -> {
if(aDouble == 0)
active.set(false);
return aDouble;
});
//return negated value of the active field
return !active.get();
}
原子和原子能的正确解决方案是什么 不使用锁也可以这样做吗
# 1 楼答案
检查另一个条件并设置布尔值的一种可能方法是使用AtomicMarkableReference。我是一个双重类型的例子:
saldo字段现在不仅表示当前的saldo,还表示银行帐户的状态