1、饿汉式,线程安全,效率低

public class SingletonTest {
    private SingletonTest() {}
    
    private static SingletonTest instance = new SingletonTest();
    
    public static SingletonTest getInstance() {
        return instance;
    }
}

2、饱汉式,非线程安全

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

3、静态内部类

public class SingletonTest {
    private static class Holder {
        private static final SingletonTest instance = new SingletonTest();
    }
    public static final SingletonTest getInstance() {
        return Holder.instance;
    }
}

 

4、双重检验

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

 

posted on 2017-07-24 22:47  啊哈咧  阅读(117)  评论(0编辑  收藏  举报