java单例模式(线程安全)

来源:互联网 发布:无法启动承载网络 编辑:程序博客网 时间:2024/06/05 02:34
package cn.yang.test.controller;/**单例模式 * Created by Dev_yang on 2016/2/26. */public class Singleton {    //多线程环境需要加上volatile,保证内存可见性    private volatile static Singleton singleton;    private Singleton(){}/*在方法上面加 synchronized会导致程序运行效率很低, public static synchronized Singleton  getInstance(){        if(singleton==null){            singleton = new Singleton();        }        return singleton;    }*///更好的解决方案    public static  Singleton  getInstance(){        if(singleton==null){            //只有singleton==null才需要考虑多线程问题,所以只在这个地方加同步就可以了            synchronized(Singleton.class){                if(singleton==null){                    singleton = new Singleton();                }            }        }        return singleton;    }}

上面是懒汉式的例子,也可以改成下面这种饿汉式

public class Singleton {    private  static Singleton singleton=new Singleton();    private Singleton(){}    public static  Singleton  getInstance(){        return singleton;    }}
1 0
原创粉丝点击