首页 > 其他分享 >笔记:单例模式---懒汉模式和饿汉模式

笔记:单例模式---懒汉模式和饿汉模式

时间:2023-01-30 20:24:20浏览次数:37  
标签:饿汉 模式 instance Single static private 单例 new public

饿汉模式:用人吃东西来比喻的话,就是小花害怕饿,她把东西都准备好了,到时候饿了就可以直接吃。总结:我先new好,如果后面需要,拿这个用就好了。

代码实现:

public class Single{
      
    private static Single instance = new Single();   //饿汉模式,这里就已经new好了

    private Single(){}  //无参构造

    public static Single getInstance(){
        
        return instance;
    }

}

  

懒汉模式:用丢垃圾来比喻的话,就是小花懒得很,垃圾都堆了一屋了,都下不去脚了,才收拾一下。总结:需要用我才去new。

代码实现:

public class Single{
      
    private static Single instance = null;   //饿汉模式,这里没new

    private Single(){}  //无参构造

    public static Single getInstance(){
        
        if(instance == null){

           instance = new Single();  //需要用才new
        }
 
        return instance;

    }

}

 

区别:

 

饿汉模式因为是最开始就已经创建好的,是线程安全的,效率高

 

懒汉模式因为用的时候才new,如果是多线程的情况下,每个线程进来都会new一个对象,所以非线程安全,节省空间

解决方式:加锁synchronized

public class Single{
      
    private static Single instance = null;   

    private Single(){}  

    public static synchronized Single getInstance(){     //第一种
        
        if(instance == null){

           instance = new Single();  
        }
 
        return instance;

    }
    

public class Single{
  private static Single instance = null;

  private Single(){} public static Single getInstance(){   synchronized(Single.class){       //第二种
      if(instance == null){
         instance = new Single();
        }
    return instance;
 }  } }

 

标签:饿汉,模式,instance,Single,static,private,单例,new,public
From: https://www.cnblogs.com/daqiqi998/p/17077156.html

相关文章

  • web应用模式、api接口、postman下载
    web应用模式#djangoweb框架,专门用来写web项目#bbs项目,图书管理系统,用的是前后端混合开发-后端人员,写后端,也要写【模板语法】---》xx.html的python代码-全栈开发-......
  • drf基础:1、web应用模式、API接口、接口测试工具
    drf入门一、web应用模式​ web的应用模式共分为两种,前后端不分离、前后端分离1、前后端混合​ 之前所写的bbs项目就是前后端不分离,后端人员在开发过程中使用模板语法......
  • Web应用模式 API接口 接口测试工具postman及使用
    目录Web应用模式前后端混合开发前后端分离开发API接口接口测试工具postmanpostman的使用Web应用模式前后端混合开发DjangoWeb框架,专门用来写web项目之前所学的,写的BB......
  • 模式识别笔记
    模式识别吴建鑫,南京大学目录目录模式识别目录第一章诸论1.模式识别流程2.模式识别和机器学习的区别第二章数学背景知识第三章模式识别系统的概述第四章评估1.基本评价......
  • web应用模式
    今日内容1web应用模式#djangoweb框架,专门用来写web项目#之前学的,写的bbs项目,图书管理系统,用的是前后端混合开发 -后端人员,写后端,也要写【模板语法】---》xx.html的......
  • 1 web 应用模式 、2 API接口 、3 接口测试工具postman
    目录1web应用模式2API接口3接口测试工具postman1web应用模式#djangoweb框架,专门用来写web项目#之前学的,写的bbs项目,图书管理系统,用的是前后端混合开发 -后端......
  • drf:web应用模式、API接口、接口测试工具postman
    目录1web应用模式web应用的开发主要有两种模式:2API接口3接口测试工具postman1web应用模式web应用的开发主要有两种模式:前后端不分离#djangoweb框架,专门用来......
  • 23种常见设计模式
    记忆口诀:23种常用设计模式,创建型模式5种,结构性模式7种,行为模式11种。创建型模式:工厂方法、抽象工厂、生成器、原型、单例结构型模式:适配器、桥接、组合、装饰、外观、享......
  • wdb应用模式、API接口、接口测试工具postman
    wdb应用模式、API接口、接口测试工具postman一、wdb应用模式#djangoweb框架,专门用来写web项目#前后端混合开发 后端人员,写后端,也要写【模板语法】---》xx.html的py......
  • 文物3d网上展览技术提供新颖的沉浸式交互参观模式
    目前在国内外,各种类型的博物馆、纪念馆、展览馆都开始采用3D数字化技术展示文物,并且获得了良好的社会效果。基于三维模型的文物展示,利用最新的3D技术,实现文物三维空间的全......