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小时内与您取得联系。