FileDocCategorySizeDatePackage
AtomicBoolean.javaAPI DocAndroid 1.5 API3746Wed May 06 22:41:02 BST 2009java.util.concurrent.atomic

AtomicBoolean

public class AtomicBoolean extends Object implements Serializable
A boolean value that may be updated atomically. See the {@link java.util.concurrent.atomic} package specification for description of the properties of atomic variables. An AtomicBoolean is used in applications such as atomically updated flags, and cannot be used as a replacement for a {@link java.lang.Boolean}.
since
1.5
author
Doug Lea

Fields Summary
private static final long
serialVersionUID
private static final Unsafe
unsafe
private static final long
valueOffset
private volatile int
value
Constructors Summary
public AtomicBoolean(boolean initialValue)
Creates a new AtomicBoolean with the given initial value.

param
initialValue the initial value

        value = initialValue ? 1 : 0;
    
public AtomicBoolean()
Creates a new AtomicBoolean with initial value false.

    
Methods Summary
public final booleancompareAndSet(boolean expect, boolean update)
Atomically sets the value to the given update value if the current value is equal to the expected value. Any given invocation of this operation may fail (return false) spuriously, but repeated invocation when the current value holds the expected value and no other thread is also attempting to set the value will eventually succeed.

param
expect the expected value
param
update the new value
return
true if successful

        int e = expect ? 1 : 0;
        int u = update ? 1 : 0;
        return unsafe.compareAndSwapInt(this, valueOffset, e, u);
    
public final booleanget()
Returns the current value.

return
the current value

        return value != 0;
    
public final booleangetAndSet(boolean newValue)
Sets to the given value and returns the previous value.

param
newValue the new value
return
the previous value

        for (;;) {
            boolean current = get();
            if (compareAndSet(current, newValue))
                return current;
        }
    
public final voidset(boolean newValue)
Unconditionally sets to the given value.

param
newValue the new value

        value = newValue ? 1 : 0;
    
public java.lang.StringtoString()
Returns the String representation of the current value.

return
the String representation of the current value.

        return Boolean.toString(get());
    
public booleanweakCompareAndSet(boolean expect, boolean update)
Atomically set the value to the given updated value if the current value == the expected value. May fail spuriously.

param
expect the expected value
param
update the new value
return
true if successful.

        int e = expect ? 1 : 0;
        int u = update ? 1 : 0;
        return unsafe.compareAndSwapInt(this, valueOffset, e, u);