前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单例模式-->饿汉式+懒汉式

单例模式-->饿汉式+懒汉式

作者头像
发布2020-10-23 10:33:18
3400
发布2020-10-23 10:33:18
举报
文章被收录于专栏:后端JavaEE

一、概述

代码语言:javascript
复制
单例模式:要求整个程序只有一个对象
 *   三步骤:1.私有化构造方法
 *          2.在类的内部创建一个对象
 *          3.通过公开的方法,返回这个对象

1.饿汉式

代码语言:javascript
复制
/*
 *饿汉式:类一加载,对象就初始化
 *          缺点:生命周期太长,浪费空间
 *          优点:线程安全
 * /
public class SingleTon2 {
    //私有化构造方法
    private SingleTon2(){};
    //私有化对象
    private static SingleTon2 instance = null;
    //公开方法返回对象
    public static synchronized SingleTon2 getInstance(){
        if(instance == null){
            instance = new SingleTon2();
        }
        return instance;
    }
}

2.懒汉式

懒汉式,使用时创建,线程不安全,加同步

代码语言:javascript
复制
public class SingleTon {
    //1.私有构造方法
    private SingleTon(){}
    //2.在类的内部创建一个对象
    private static SingleTon instance;
    //    3.通过公开的方法,返回这个对象
    public static SingleTon getInstance(){
        if(instance==null){
            instance = new SingleTon();
        }
        return instance;
    }


}

懒汉式,优化

代码语言:javascript
复制
/*
好处:生命周期短,节省空间 缺点:线程不安全,必须使用同步解决
 */
  
public class SingleTon2 {
    //(1)私有化构造方法
    private static boolean flag=false;
    private SingleTon2(){
        if(flag){
            throw new RuntimeException("不能反射破解");
        }
    }
    //(2)在类内部创建一个对象
    private static volatile SingleTon2 instance;
    //(3)通过公开的方法,返回这个对象
    public static  SingleTon2 getInstance(){
        //判断锁是否可用效率低
        if(instance==null) {//目的:提高效率, double check双重检查
            synchronized (SingleTon2.class) {
                if (instance == null) {
                    //(1)new  (2)dup  (3)invokespecial  (4)astore
                    // 1 2 3 4
                    // 1 2 4 3  多线程问题?
                    instance = new SingleTon2();
                    flag=true;
                }
            }
        }
        return instance;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 1.饿汉式
  • 2.懒汉式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档