一般的,我们编写单例模式往往直接在单例引用的时候,即把实例生成,采用private final static 的成员变量直接初始化掉,这种方法能适应大部分的场景,但有时候本单例模式可能还处理其他业务,那么很可能用不到初始化的成员变量,那么只有当要用到本单例对象时,才创建对象的懒加载模式就很必须了。

有人想到了用synchronized 包装方法来达到初始化的目的,但是当多线程同时访问时,又大大影响了效率,进一步有人想到了用二次同步的方法来实现单例模式,其实这是个错误的做法,这里也不做讨论。这里介绍一种真正的单例模式懒加载的写法:

public class LazySingleton {
 private LazySingleton(){ 
 }
 private static class SingletonHolder{
  private static LazySingleton instance = new LazySingleton();
 }
 public static LazySingleton getInstance(){
     return SingletonHolder.instance;
 }
}
     通过使用内部类来实现,这才是真正的单例懒加载。

阅读原文

转载于:https://blog.51cto.com/scorpionspirit/1900835

懒加载方式下的单例模式相关推荐

  1. java懒加载设计模式_java设计模式——单例模式

    整理一下设计模式的个人理解. 描述 单例模式是java中比较常见的一种设计模式,顾名思义为一个类只能创建一个实例,多用于全局对象,如:配置的加载,spring bean加载各种配置(spring容器所 ...

  2. 移动端 懒加载、下拉刷新、上拉加载

    优势:提升性能 实现原理:图片是通过img的src属性,当对src赋值时,浏览器就会请求图片资源. 基于这个问题,我们可以利用标签的自定义属性(data-xxx),来保存图片的路径,当我们需要加载图片 ...

  3. flutter实战4:新闻列表的懒加载和下拉手势刷新

    上一篇我们实现了新闻列表,但在网络不好的时候列表会白屏,因此为了提高使用体验,往列表中加入懒加载效果.其次,引入一个Flutter内置的手势控件,用于支持下拉刷新列表的效果如下图: Flutter将异 ...

  4. VUE项目中图片加载过大处理方式-渐进式方式-懒加载方式--附源码

    解决有两步: 1.采用渐进式加载:原图未加载完时显示比它内存小的模糊图: 2.采用懒加载:只加载可视区域的图片,即滚动到可视区域时再加载图片 vue-lazyload-img:VUE图片懒加载插件 v ...

  5. SAP Spartacus CMS Component的lazy loading懒加载方式

    代码如下: ConfigModule.withConfig({cmsComponents: {SimpleResponsiveBannerComponent: {component: () => ...

  6. Xamarin.Forms: 无限滚动的ListView(懒加载方式)

    说明 在本博客中,学习如何在Xamarin.Forms应用程序中设计一个可扩展的无限滚动的ListView.这个无限滚动函数在默认的Xamarin.Forms不存在,因此我们需要为此添加插件.在这里我 ...

  7. Android androidx下的fragment懒加载

    androidx下的fragment中onHiddenChanged方法不会被调用,这就导致了懒加载实现方式要变更 前置条件: BottomNavigationView+ViewPager+fragm ...

  8. vue路由懒加载的两种方式

    1.当一个vue项目很大的时候,对于一些"暂时"用不到的组件,我们可以不进行加载,等到用到次组件时再加载.这样可以优化spa应用首次加载白屏情况,也给用户更好的体验.这样就是vue ...

  9. vue路由加懒加载的方式

    1.当一个vue项目很大的时候,对于一些"暂时"用不到的组件,我们可以不进行加载,等到用到次组件时再加载.这样可以优化spa应用首次加载白屏情况,也给用户更好的体验.这样就是vue ...

最新文章

  1. OpenNebula 入门安装配置
  2. 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习
  3. Linux权限管理 - 特殊权限之文件特殊权限
  4. 前百度主任架构师创业,两年融资千万美元,他说 AI 新药研发将迎来黄金十年...
  5. 用什么软件写html语言,写html代码用什么软件
  6. 修改IP4属性时,针对闪退问题的解决方法
  7. 【LOJ】 #2520. 「FJOI2018」所罗门王的宝藏
  8. 深度数据全方位解析:冰桶挑战---TOMsInsight 2014.08.20
  9. 【Kaldi例子】Librispeech数据整理
  10. 计算机c盘能格式化吗,C盘能格式化吗
  11. HTML5 第004篇 <abbr>标签【定义缩写】
  12. 解决Ubuntu 20.04 播放视频,因缺少编解码器无法处理音频/视频流,以及解决‘因没有公钥,无法验证下列签名’问题
  13. gts250 linux驱动下载,下载:NVIDIA显卡Linux驱动190.32测试版
  14. “Mayday!我们的站点又不能访问啦!”之DNS污染篇
  15. js 忽略字母大小写
  16. 【iot-manager】(1)IOT商业化和未来竞争、淘汰还在继续,需要折腾一个开源IOT系统,参考Rancher开源Octopus:IoT设备管理系统做一个物联网管理系统
  17. 合并结果集子查询案列
  18. 基于java+ssm+mysql的企业审批管理系统
  19. visiting a friend意念传送点
  20. python家乡美食与旅游景点导游推荐系统django源码介绍

热门文章

  1. mac home目录创建文件夹,修改权限
  2. ActiveMQ配置文档
  3. Ph.D. Grind 读后感- by Liangjun
  4. ldap和kerberos整合大数据账号
  5. fabric node enrollAdmin.js 报错SyntaxError: Unexpected token function at createScript (vm.js:56:10)
  6. Linux下如何从普通用户切换到root用户
  7. Typora一次编辑,知乎、CSDN等多平台快速发布:Typora + PicGo + 图床
  8. oracle 052 题库更新,OCP题库升级,新版052考试题及答案整理-18
  9. java连续创建目录_Java创建目录
  10. kafka消费者分区的分配的三种机制