The thread title should be self-explnatory... I'm a bit confused between the specification of below methos from AtomicBoolean
class:
java.util.concurrent.atomic.AtomicBoolean#compareAndSet
java.util.concurrent.atomic.AtomicBoolean#getAndSet
My assemption is that both would result in the same behavior when used as a boolean clause in an if
condition:
public class Test {
private AtomicBoolean flag = AtomicBoolean(false);
public void processSomeAction() {
if (flag.getAndSet(false)) { // Shouldn't this be similar to flag.compareAndSet(false)
// process some action
}
}
//...
private void internalMutatorMethod() {
// do some staff then update the atomic flag
flas.set(true);
}
}
Assuming that I want to retrieve the current flag value and update it automaticlly, shouldn't both methods produce the same behavior?
I would much appreciate any explanations regarding how and when to use each of those if I'm missing internal differences.