A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面内容纯手打:
单例模式,饿汉式
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;
    }
}

评分

参与人数 1黑马币 +2 收起 理由
白玉箫 + 2 这个帖子很好!这个锁上的很妙,学以致用。.

查看全部评分

3 个回复

倒序浏览
你不会也今天刚刚学这个吧
回复 使用道具 举报
这是学到哪了看的懂代码,不懂名词
回复 使用道具 举报
再理解一下.......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马