天天看点

单例模式以及例子

单例模式

一个类只能创建一个对象

饿汉式 – 可能会浪费空间,并发效率高

class Singleton{
    private static Singleton o = new Singleton();
    private Singleton(){}
    public static Singleton getSingleton(){
        return o;
    }
}
           

懒汉式–可能会浪费空间,并发效率低

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

双重校验锁–在保证线程安全的情况下,尽可能的提高并发效率

class Singleton{
    private static Singleton o = null;
    private Singleton(){}
    public static Singleton getSingleton(){
        if(o == null){
            synchronized(Object.class) {
                if(o==null){
                    o = new Singleton();
                }
            }
        }
        return o;
    }
}
           

懒加载–静态内部类实现

class Singleton{
    private Singleton(){}
    private static class innerClass{
        static Singleton singleton = new Singleton();
    }
    public static Singleton getSingleton(){
        return innerClass.singleton;
    }
}
           

继续阅读