推荐使用的两种单例模式

来源:互联网 发布:js怎么设置display 编辑:程序博客网 时间:2024/06/04 18:25

两种经典的线程安全的单例模式(均采用懒汉式),一种是同步加锁的模式;一种是采用私有静态类的方式。

一、只有当instance为null时,需要获取同步锁,创建一次实例。当实例被创建,则无需试图加锁。

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

二、定义一个私有的内部类,唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,在第一次用这个嵌套类时,会创建一个实例。
而类型为SingletonHolder的类,只有在Singleton.getInstance()中调用,由于私有的属性,他人无法使用SingleHolder,不调用Singleton.getInstance()就不会创建实例。

public class Singleton {    private Singleton(){    }    private static class SingletonHolder{        private final static Singleton instance = new Singleton();    }    public static Singleton getInstance(){        return SingletonHolder.instance;    }}
原创粉丝点击