Lazy Loading Singletons

本文探讨了Singleton模式的多种实现方式,重点介绍了Bob Lee提出的高效实现方案。通过使用静态内部类,不仅保证了Singleton实例的唯一性,还有效避免了同步带来的性能损耗。
今天在论坛看见一小段代码,不得不佩服作者( blog)的创新精神。以前在使用Singleton的时候大多采用这样的方式:
java 代码
  1. public class Singleton {
  2. static Singleton instance;
  3. public static synchronized Singleton getInstance() {
  4. if (instance == null)
  5. instance = new Singleton();
  6. return instance;
  7. }
  8. }
但这里的问题是synchronization实际上只在 getInstance()第一次调用的时候需要,这个方法在多线程频繁调用的应用中必然会成为效率的瓶颈。

到了 java 1.5,Bob Lee提到了 Double-Checked Locking (DCL) ,并强调了是infamous DCL;这种做法强调了效率 (但 Bob Lee认为 volatile 不比 synchronized快,另外这种做法会产生更多的代码,所以仍然坚持使用plain old synchronization),并不将整个方法 synchronized,而是只对创建 Singleton进行同步,这样,线程进入 getInstance(),发现 instance 已经创建,就会直接返回instance,而不用在方法外等待。

在这种情况下,Singleton的实现代码一般是这样:
java 代码
  1. static volatile Singleton instance;
  2. public static Singleton getInstance() {
  3. if (instance == null) {
  4. synchronized (Singleton.class) {
  5. if (instance == null)
  6. instance == new Singleton();
  7. }
  8. }
  9. return instance;
  10. }

接下来是 Bob Lee的创新做法:
java 代码
  1. static class SingletonHolder {
  2. static Singleton instance = new Singleton();
  3. }
  4. public static Singleton getInstance() {
  5. return SingletonHolder.instance;
  6. }
JLS将保证 Singleton instance只在第一次调用g etInstance()的时候创建。优雅且快速!
潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值