全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 中单例模式饿汉式与懒汉式的对比

java 中单例模式饿汉式与懒汉式的对比

概念:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

以前我们的做法是设置一个全局变量,也就是让它使得一个对象被访问。但是它不能防止你实例多个对象。这时我们可以让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且提供一个访问该实例的方法。

通过上面的描述,我们可以看到单例模式有以下特点:

  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。

因此,创建一个类的实例的具体方法(要素)是:

      1、 私有的、静态的成员变量
      2、 私有的构造方法
      3、 公共的、静态的一个入口方法

根据上面的具体方法,我们来看一下下面的代码

public class Test { 
  private static Test instance = new Test ();  
   
  private Test (){ 
   
  } 
   
  public static Test GetInstance(){ 
    return instance; 
  } 
} 

从上面的代码中我们看出,当类加载到内存时,在我们调用GetInstance()方法之前,就已经在内存中创建了一个instance对象。也就是说,不管我是否想用这个方法,在内存中就已经存在instance这个对象了,此时这个对象就是多余对象了,这样就会占用内存资源。因此我们将这种单例模式称作“饿汉式”单例模式。其实就是一个“预加载”的过程。

而“懒汉式”单例模式(也就是“延迟式”创建对象)则是在我们需要的时候才去创建这个对象。这样就避免了提前创建对象占用内存资源。



public class Test { 
  private static Test instance = null; 
   
  private Test (){ 
     
  } 
  public static Test getInstance(){ 
    if (instance == null) then { 
      instance = new Test (); 
    } 
    return instance; 
  } 
} 

但是,通过观察上面的代码,我们可以看出其中还是存在一些问题的。假设,有多个进程同时调用getInstance()方法,这样就可能出现同时创建多个对象,那这就不是单例模式了。因此,我们可以加入“同步”这个关键字使得我们的代码更加的严谨。改进之后是这样的

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

 以上就是java中两种单例模式的对比,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 中单例模式  # 中单例饿汉式与懒汉式的对比  # Java单例模式的线程安全  # 饿汉和懒汉模式详解  # java 单例模式(懒汉式与饿汉式)  # 关于单例模式懒汉式和饿汉式的区别及说明  # 多个  # 我们可以  # 提供一个  # 有一个  # 自己的  # 我是  # 加载  # 这一  # 就会  # 是这样  # 如有  # 则是  # 两种  # 这就  # 希望能  # 可以看到  # 可以看出  # 让它  # 谢谢大家  # 想用 


相关文章: 股票网站制作软件,网上股票怎么开户?  如何用VPS主机快速搭建个人网站?  MySQL查询结果复制到新表的方法(更新、插入)  高端网站建设与定制开发一站式解决方案 中企动力  Swift中循环语句中的转移语句 break 和 continue  深圳网站制作培训,深圳哪些招聘网站比较好?  制作旅游网站html,怎样注册旅游网站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何通过远程VPS快速搭建个人网站?  如何快速搭建高效简练网站?  如何在IIS中配置站点IP、端口及主机头?  如何选择PHP开源工具快速搭建网站?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  ,南京靠谱的征婚网站?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何在云主机上快速搭建网站?  如何用免费手机建站系统零基础打造专业网站?  历史网站制作软件,华为如何找回被删除的网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星后台管理:高效配置与模板优化提升用户体验  网页设计网站制作软件,microsoft office哪个可以创建网页?  设计网站制作公司有哪些,制作网页教程?  建站VPS能否同时实现高效与安全翻墙?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何零基础在云服务器搭建WordPress站点?  北京网站制作的公司有哪些,北京白云观官方网站?  高防服务器租用指南:配置选择与快速部署攻略  如何自定义建站之星网站的导航菜单样式?  建站之星如何一键生成手机站?  淘宝制作网站有哪些,淘宝网官网主页?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何通过二级域名建站提升品牌影响力?  如何在IIS7上新建站点并设置安全权限?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站之星会员如何解锁更多建站功能?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  建站之星如何取消后台验证码生成?  济南网站制作的价格,历城一职专官方网站?  山东云建站价格为何差异显著?  广州营销型建站服务商推荐:技术优势与SEO优化解析  网站制作员失业,怎样查看自己网站的注册者?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何通过商城自助建站源码实现零基础高效建站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  公司网站的制作公司,企业网站制作基本流程有哪些?  c# 在ASP.NET Core中管理和取消后台任务  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何访问已购建站主机并解决登录问题?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。