当前位置: 首页 > news >正文

个人律师网站模板360免费建站教程

个人律师网站模板,360免费建站教程,广西住建局,wordpress svn系列文章目录 【设计模式】之责任链模式【设计模式】之策略模式【设计模式】之模板方法模式 文章目录 系列文章目录 前言 一、什么是单例模式 二、如何使用单例模式 1.单线程使用 2.多线程使用(一) 3.多线程使用(二) 4.多线程使用…

系列文章目录

  • 【设计模式】之责任链模式
  • 【设计模式】之策略模式
  • 【设计模式】之模板方法模式

文章目录

系列文章目录

前言

一、什么是单例模式

二、如何使用单例模式

1.单线程使用

2.多线程使用(一)

3.多线程使用(二)

4.多线程使用(三)双重检测

总结


前言

今天给大家介绍23种设计模式中的单例模式,也是大家比较常见的一种设计模式,但是,里面的一些细节还是有很多人会忽略的。🌈


一、什么是单例模式

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

二、如何使用单例模式

1.单线程使用

这种方式只适合单线程下使用,多线程下会实例化多个对象,不一定是10个。

public class Single {private static Single instance;private Single(){System.out.println("实例化Single对象");}public static Single getInstance(){if (instance == null) instance = new Single();return instance;}
}

测试:

public class test {public static void main(String[] args) {for (int i = 0; i < 10; i++) {Single.getInstance();}}
}
测试结果:/*实例化Single对象Process finished with exit code 0*/

2.多线程使用(一)

只需添加一个synchronized 关键字即可

public class Single {private static Single instance;private Single(){System.out.println("实例化Single对象");}public synchronized static Single getInstance(){if (instance == null) instance = new Single();return instance;}
}

测试:

public class test {public static void main(String[] args) {for (int i = 0; i < 10; i++) {new Thread(()->{Single.getInstance();}).start();}}
}
测试结果:/*实例化Single对象Process finished with exit code 0*/
虽然添加 synchronized 可以在多线程下保证实例化一次对象,但是因为加锁,会造成系统资源浪费。假设我们遍历10次,相当经过多次经过锁,而我们只需要保证第一次实例化成功,也就是加一次锁,后面的会经过逻辑判断,不会实例化对象。因此,我们引出了下面一种方法。

3.多线程使用(二)

在类加载的时候直接实例化对象。

public class Single {private static Single instance = new Single();private Single(){System.out.println("实例化Single对象");}public  static Single getInstance(){return instance;}
}

测试结果跟上方一样

4.多线程使用(三)双重检测

这种方式也能大大减少锁带来的性能消耗。

public class Single {private volatile static Single instance ;private Single(){System.out.println("实例化Single对象");}public static Single getInstance(){if (instance == null){synchronized (Single.class){if (instance == null){instance = new Single();}}}return instance;}
}

总结

以上就是单例模式在单多线程下的使用以及优化,今天就先介绍到这里,我们下期再见。✋

http://www.yayakq.cn/news/193587/

相关文章:

  • 长春市做网站的公司wordpress 留言汉化
  • 便捷网站建设多少钱网站改了标题会怎么样
  • 免费做的网站怎么设置域名解析做58同城这样的网站有哪些
  • 淘宝客网站制作教程设计一个logo需要多少钱
  • 自己建设的手机网站做百度地图定位无锡网站制作哪家正规
  • wordpress适合做什么网站wordpress首页文章数量
  • 延安网站开发网站首页设计尺寸
  • qfd 网站开发什么是网站建设方案书
  • 哈密网站制作公司个人怎么样做网站
  • 十堰网站免费建设wordpress微信登录
  • 国外做耳机贸易的平台网站河北网站建设价格大全
  • 网站f式布局网络推广公司联系方式
  • 网站svg使用微信小程序商城完整源码
  • 做公司企业网站外包项目网站
  • 网站开发硬件设计找生产建筑模板的厂家
  • 搭建网站教学规模以上工业企业数量
  • 个人网站开发与设计摘要福州网站开发fjfzwl
  • 深圳网站设计公司 学校中国黄金集团建设有限公司官方网站
  • 小说网站签约作者应该怎么做苏州网站建设专家
  • 网站上做公司宣传seo优化推广工程师招聘
  • 网站使用了seo优化工具怎么检测软件定制为什么不给源码
  • 网站职位推荐怎么做网站关键词优化公司
  • 中天建设集团有限公司总网站惠州市网站开发
  • 从网站栏目看网站功能河北省建设机械会网站首页
  • 做一网站优化要多少钱智能网联对应的职业
  • 哪些网站不扣流量做网站可视化
  • 旅游景点企业网站排名网站建设模板是什么意思
  • 钉钉创建企业外贸网站建设网站优化
  • 织梦儿童早教教育培训网站模板安卓app开发教程视频免费
  • 网站没有后台登陆文件夹网站开发做什么