美文网首页
1)单例模式

1)单例模式

作者: 浅尘Lian | 来源:发表于2017-02-08 11:02 被阅读0次

    public class Singleton {
    private static volatile Singleton instance = null;

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

    要保证单例,需要做一下几步:

    1.必须防止外部可以调用构造函数进行实例化,因此构造函数必须私有化。
    2.必须定义一个静态函数获得该单例
    3.单例使用volatile修饰:用来修饰被不同线程访问和修改的变量
    4.使用synchronized 进行同步处理,并且双重判断是否为null,我们看到synchronized (Singleton.class)里面又进行了是否为null的判断,这是因为一个线程进入了该代码,如果另一个线程在等待,这时候前一个线程创建了一个实例出来完毕后,另一个线程获得锁进入该同步代码,实例已经存在,没必要再次创建,因此这个判断是否是null还是必须的。

    相关文章

      网友评论

          本文标题:1)单例模式

          本文链接:https://www.haomeiwen.com/subject/eryvittx.html