单例模式的几种形式

来源:互联网 发布:印尼旅行社软件 编辑:程序博客网 时间:2024/06/06 00:00
public class Singleton{//饿汉模式,线程安全,但是就算不调用get也会创建新对象    private static final singleton = new Singleton;    private Singleton(){    }    public static Singleton getSingleton(){        return singleton;    }}public class Singleton{//懒汉模式,但是线程不安全    private static singleton ;    private Singleton(){    }    public static Singleton getSingleton(){        if(singleton == null){            singleton = new Singleton();        }        return singleton;    }}public class Singleton{//线程安全,但是效率低    private static  singleton;    private Singleton(){    }    public static synchronized Singleton getSinglet(){         if(singleton == null){            singleton = new Singleton();        }        return singleton;    }}public class Singleton{//双重检验锁。    private volatile static singleton;    private Singleton(){    }    public static Singleton getSingleton(){        if(singleton == null){            synchronized(Singleton.class){                if(Singleton == null){                    singleton = new Singleton();                }            }        }        retuen singleton    }}// 枚举public enum Singleton {//最右bige和简单的方法    INSTANCE;    // 自定义的其他任意方法    public void whateverMethod() { }}public class Singleton {//静态内部类,防止不兼容    private static class SingletonHolder {        private static final Singleton singleton = new Singleton();    }    private Singleton() { }    public static Singleton getSingleton() {        return SingletonHolder.singleton;    }}
原创粉丝点击