一、单例模式的概念

单例模式:创建唯一的实例并提供一个全局的访问点。

注意多线程问题,不同的类加载器可能会使得单例失效。

二、代码

(1)Synchronized同步方法

简单但是开销大,Synchronized是一个很重的操作

public class Singleton {
    private static Singleton unique;
    private Singleton() {}
    public static synchronized Singleton get() {
        if(unique == null) unique = new Singleton();
        return unique;
    }
}

(2)在类加载时实例化

public class Singleton {
    private static Singleton unique = new Singleton();
    private Singleton() {}
    public static Singleton get() {
        return unique;
    }
}

(3)双重检测,局部加锁

public class Singleton {
    private static Singleton unique;
    private Singleton() {}
    public static  Singleton get() {
        if(unique == null) {
            synchronized(Singleton.class) {
                if(unique == null) unique = new Singleton();
            }
        }
        return unique;
    }
}
12-17 00:52