单例模式及数组也能无锁:AtomicIntegerArray

减少锁持有时间
锁粗化
锁偏向
轻量级锁
自旋锁
锁消除
ThreadLocal的简单使用

和AtomicInteger类似的还有AtomicLong用来代表long型数据
AtomicBoolean表示bollean型数据
AtomicReference表示对象引用。
数组也能无锁:AtomicIntegerArray
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
让普通变量也享受原子操作:AtomicIntegerFieldUpdater

它是一种对象创建模式,用于产生一个对象的具体实例,它可用确保系统中一个类
只产生一个实例。在java中,这种行为能带来两大好处:
1.对于频繁使用的对象,可用省略new操作花费的时间,这对于重量级对象而言,是非常
可观的一笔系统开销。
2.由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC
  停顿时间。

public class StaticSingleton {
    private StaticSingleton(){
        System.out.println("StaticSingleton is create");
    }
    private static class SingletonHolder{
        private static StaticSingleton instance = new StaticSingleton();
    }
    public static StaticSingleton getInstance(){
        return SingletonHolder.instance;
    }
}


  单例模式及数组也能无锁:AtomicIntegerArray_第1张图片

你可能感兴趣的:(单例模式)