黑马程序员技术交流社区

标题: 两个单例模式,对冯佳老师视频中懒汉式的一点补充 [打印本页]

作者: wosika    时间: 2016-9-14 17:25
标题: 两个单例模式,对冯佳老师视频中懒汉式的一点补充
下面内容纯手打:
单例模式,饿汉式
public class Singleton{
    private Singleton(){}//私有构造方法
    private  static Singleton s = new Singleton(); //私有成员变量,让类一旦加载就创建对象用静态修饰
    public static Singleton getInstance(){
       return s;                                                  //提供公共的方法,将该方法用静态修饰,因为静态只能调用静态,所以需要成员变量要用static 修饰。
    }              //(个人理解)饿汉式之所以叫饿汉式,是因为在类一旦加载进来,就会创建出一个实例对象,节省了时间,浪费了空间,所以叫饿汉式。
}

单例模式,懒汉式


public class Singleton{
    private Singleton(){}//私有构造方法
    private static Singleton s;      //私有成员变量,因为它懒,所以一开始不创建实例,引用类型成员变量默认初始化值为null,可以不用赋值。
                                                  // 以下是重点
    public static synchronized Singleton getInstance(){   
    //补充:因为懒汉式没有在一开始的时候创建对象,所以在多线程使用时,又可能会因为延迟创建多个对象,所以,在公共的访问方法上,
  //添加了一个关键字 synchronized 。这样保持线程同步,可以避免这个情况,达到真正的单例模式,这是对冯佳老师的视频的一个补充。
        if (s == null){
           s = new Singleton();    //创建对象。时间相对饿汉式,要久一点。
        }
        return s;
    }
}

作者: kangnam    时间: 2016-9-14 18:34
你不会也今天刚刚学这个吧
作者: 江月念华    时间: 2016-9-14 20:52
这是学到哪了看的懂代码,不懂名词
作者: haoge349    时间: 2016-9-14 21:30
再理解一下.......




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2