多线程安全问题在单例模式中的体现(懒汉式&饿汉式)

// 单例模式:饿汉式
class Single {

    private static final Single s = new Single();

    public static synchronized Single getInstance() {
        return s;
    }
}

// 单例模式:懒汉式
class Single {
    private static Single s = null;

    public static Single getInstance() {
        if (s == null) {
            synchronized (Single.class) {  //静态方法,锁是Class对象
                if (s == null) {
                    s = new Single();
                }
            }
        }
        return s;
    }
}
// 单例模式:内部类实现
class Single {

    private static class Inner {
        private final static Single s = new Single();
    }

    public static synchronized Single getInstance() {
        return Inner.s;
    }
}

猜你喜欢

转载自blog.csdn.net/ming2316780/article/details/51058460