《Java设计模式及实践》—2.1.4 提前加载和延迟加载

举报
华章计算机 发表于 2019/07/22 11:48:58 2019/07/22
【摘要】 本节书摘来自华章计算机《Java设计模式及实践》一书中的第2章,第2.1.4节,[印度] 卡马尔米特·辛格(Kamalmeet Singh)[荷兰] 艾德里安·伊恩库列斯库(Adrian Ianculescu) 著[罗马尼亚] 路西安-保罗·托尔耶(Lucian-Paul Torje) 张小坤 黄 凯 贺 涛 译.

2.1.4 提前加载和延迟加载

按照实例对象被创建的时机,可以将单例模式分为两类。如果在应用开始时创建单例实例,就称作提前加载单例模式;如果在getInstance方法首次被调用时才调用单例构造器,则称作延迟加载单例模式。

前面例子中描述的无锁线程安全单例模式在早期版本的Java中被认为是提前加载单例模式,但在最新版本的Java中,类只有在使用时候才会被加载,所以它也是一种延迟加载模式。另外,类加载的时机主要取决于JVM的实现机制,因而版本之间会有不同。所以进行设计时,要避免与JVM的实现机制进行绑定。

目前,Java语言并没有提供一种创建提前加载单例模式的可靠选项。如果确实需要提前实例化,可以在程序的开始通过调用getInstance方法强制执行,如下面代码所示:

        image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。