AtomicReference 自动更新对象应用

@ThreadSafe
public class ConcurrencyByAtomicReference {
  private static AtomicReference count = new AtomicReference(0);

  public static void main(String[] args) {
    count.compareAndSet(0,2);//2
    count.compareAndSet(0,1);//no
    count.compareAndSet(2,3);//3
    count.compareAndSet(2,5);//no

    System.out.println(count.get());//3
  }
}

关于使用Atomic实现单例

public class AtomicSingleton{

    private AtomicSingleton() {

    }
    private static AtomicReference<AtomicSingleton> instance = new AtomicReference<>();

    public static AtomicSingleton getInstance() {
        if(instance.get() == null) {
            instance.compareAndSet(null,new AtomicSingleton());
        }
        return instance.get();
    }
}