单例模式

来源:互联网 发布:免费的代理服务器软件 编辑:程序博客网 时间:2024/06/18 02:16

单例模式

      单例模式非常常用,从字面意思就可以看出。是单个实例的意思。单例模式分两种饿汉式和懒汉式。
1、饿汉式:
public class SingleClass {    private static SingleClass instance = new SingleClass();    public static SingleClass getInstance() {        return instance;    }}
饿汉式是线程安全的,毋庸置疑。

2、懒汉式:
2.1这种写法只适合单线程操作,如果是多线程就会出现线程不安全。
public class SingleClass{    private static SingleClass instance = null;    public static synchronized SingleClass getInstance(){        if(instance == null){            instance = new SingleClass();        }        return instance;    }}

2.2在上面的代码中添加synchronized同步后线程就是安全的。
public class SingleClass {    private static  SingleClass instance = null;    public static synchronized SingleClass getInstance(){        if(instance == null){            instance = new SingleClass();        }        return instance;    }}

2.3静态内部类
public class SingleClass {    static class SingleClassHolder{        static SingleClass instance = new SingleClass();    }    public static SingleClass getInstance(){        return SingleClassHolder.instance;    }}
2.4双重校验,不推荐这种写法。看上去都比较麻烦
public class SingleClass {    private volatile static SingleClass instance;        public static SingleClass getInstance() {        if (instance == null) {            synchronized (SingleClass.class) {                if (instance == null) {                    instance = new SingleClass();                }            }        }        return instance;    }}


原创粉丝点击