Java单例模式——线程安全的懒汉模式

写法一:同步方法

class Single{
    private Single() {
    }

    private static Single instance = null;

    public static synchronized Single getInstance(){
        if (instance == null){
            instance = new Single();
        }
        return instance;
    }
}

写法二:同步代码块

class Single{
    private Single(){}

    private static Single instance = null;
    public static Single getInstance(){
        synchronized(Single.class){
            if (instance == null){
                instance = new Single();
            }
        }
        return instance;
    }
}

写法三:

class Single{
    private Single(){}

    private static volatile Single instance = null;

    public static Single getInstance(){
        if (instance == null) {
            synchronized (Single.class){
                if (instance == null){
                    instance = new Single();
                }
            }
        }
        return instance;
    }
}

此方法会导致指令重排,所以要加上 volatile关键字

你可能感兴趣的:(java,单例模式,开发语言)