All Downloads are FREE. Search and download functionalities are using the official Maven repository.

brooklyn.util.javalang.AtomicReferences Maven / Gradle / Ivy

Go to download

Utility classes and methods developed for Brooklyn but not dependendent on Brooklyn or much else

There is a newer version: 0.7.0-M1
Show newest version
package brooklyn.util.javalang;

import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Supplier;

public class AtomicReferences {

    /** sets the atomic reference to the given value, and returns whether there is any change */
    public static boolean setIfDifferent(AtomicBoolean ref, boolean value) {
        return ref.getAndSet(value) != value;
    }

    /** sets the atomic reference to the given value, and returns whether there is any change */
    public static  boolean setIfDifferent(AtomicReference ref, T value) {
        return !Objects.equal(ref.getAndSet(value), value);
    }
    
    /** returns the given atomic as a Supplier */
    public static  Supplier supplier(final AtomicReference ref) {
        Preconditions.checkNotNull(ref);
        return new Supplier() {
            @Override public T get() { return ref.get(); }
            @Override public String toString() { return "AtomicRefSupplier"; }
        };
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy