如果要保证系统里一个类最多只能存一个实例时,就需要单例模式
1)最简单的单例
2)延迟创建
延迟实例化单例对象(static属性在加载类时就会被初始化),即在第一次使用该类的实例时才实例化
public class UnThreadSafeSingleton{
private static UnThreadSafeSingleton = null;
public static UnThreadSaceSingleton getInstance(){
if(instance==null){
instance = new UnThreadSafeSingleton();
}
return instance;
}
}
此方法不是线程安全的
为了解决这个问题,在此方法上加synchronized关键字,即
public static
synchronized ThreadSafeSingleton getInstance(){....}
上述实现有performance问题,采用下面方法
3)Double-Check Locking
4)Initialization on demand holder
这个也是线程安全的延迟的单例初始化方式
public class lazyLoadedSingleton{
private LazyLoadedSingleton(){}
private static class LazyHolder{ //holds the singleton class
private static final LazyLoadedSingleton singletonInstance = new LazyLoadedSIngleton();
}
public static LazyLoadedSingleton getInstance(){
return LazyHolder.singletonInstance;
}
}
5)Singleton的序列化
- 大小: 30.8 KB
- 大小: 41.8 KB
- 大小: 50.2 KB
- 大小: 51.7 KB
- 大小: 72.4 KB
- 大小: 34.6 KB
- 大小: 42.4 KB
- 大小: 21.1 KB
分享到:
相关推荐
个世界顶级摄影及相关网站-摘自《影像视觉》杂志(完整版).doc
https://www.cnblogs.com/solitarywares/p/7629893.html require用于建立states之间的关系,这种依赖关系以<state name> : 的形式来定义 Requisites有两种形式,require和require_in,分别表示依赖和被依赖的关系
### 用户定义与UI设计 #### 一、引言 在当今移动互联网时代,用户体验(User Experience, UX)成为了衡量一个应用程序是否成功的关键因素之一。而用户体验的核心组成部分之一就是用户界面(User Interface, UI)设计。...
在Linux环境下进行C语言开发时,`gdb`(GNU Debugger)是一个不可或缺的工具,它可以帮助开发者调试程序,找出代码中的错误。本文将详细介绍`gdb`的基本使用方法,包括如何设置断点、查看和修改变量、控制程序执行等...
【行测资料分析技巧】 行测资料分析是公务员考试中的一种重要题型,它测试考生对数据的理解、分析和比较能力。以下是对该题型的一些关键知识点和解题技巧的详细说明: 1. **资料类型**: - 文字资料:这类资料...
1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在C#中,通常通过静态成员或者懒加载实现。 2. **工厂方法模式**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法将实例化操作推迟...
Signal Harness保证连线可以画出任意的信号组合,适合比较复杂的电路和总线设计,Harness Connector连接器可以将不同的信号集合在一起,连接器可以捆绑到signalharness每个网络、总线、Sub-harness harness entry
声波透射法是一种用于检测混凝土灌注桩完整性的技术,该方法基于超声波在混凝土中的传播特性。混凝土作为一种多相非均匀介质,声波在其内部传播时,如果遇到裂缝、断裂、夹泥或其他缺陷,声波会绕过这些障碍或在传播...
本章节将讲解如何使用FPGA开发板上的按键控制LED灯,介绍了按键开关的类型、硬件设计、程序设计和下载验证。 9.1 简介 按键开关是常用的控制器件,结构简单,成本低廉,在家电、数码产品、玩具等领域有广泛的应用。...
"FPGA开发中的串口通信...HAL库提供了多种串口模式,如 USART、UART、LIN等,可以根据实际情况选择合适的串口模式。同时,HAL库还提供了许多有用的函数,如串口初始化、串口发送、串口接收等,可以方便地实现串口通信。
根据给定的信息,我们可以深入探讨这本《c#面向对象23种设计模式手册》中的设计模式知识点。这本书不仅适合初学者快速上手C#语言和面向对象编程的基础概念,同时也为进阶学习者提供了丰富的设计模式案例。下面将详细...
外星人入侵项目1-外来入侵-来自Python速成课程#Rules在《外星人入侵》中,玩家控制出现在屏幕底部中央的一艘火箭飞船。 玩家可以使用箭头键左右移动飞船,并使用空格键射击子弹。 游戏开始时,一群外星人注满天空,...
一部较适合Linux学习者学习的书籍,特别是刚从Windows转向Linux的朋友。主讲Linux基本技能。随着Linux日益强大,越来越多的人接触Linux,但苦于无参考书籍,使得Linux学习倍感吃力,本书将... ---摘自《红联文摘》
在这个项目中,我们主要关注三种设计模式:模块模式、观察者模式和单例模式。 1. **模块模式**: 模块模式是JavaScript中实现封装和私有变量的关键技术。它通过立即调用一个函数来创建一个独立的作用域,这个作用...
### SQL Server 2008 故障转移集群与数据库镜像配置实例 #### 一、向 SQL Server 群集中添加另一个节点 在构建 SQL Server 2008 的故障转移集群时,通常需要在现有集群中添加新的节点来增强系统的可用性和负载均衡...
idea 插件 如果你使用git来管理代码版本,你必须懂得如何使用.gitignore文件,该文件可以指定...这三种写规则的方式有不同的用武之地 --摘自百度经验https://jingyan.baidu.com/article/8065f87faeb57e23312498e7.html
本系列一共有20篇左右,除了介绍23种GOF设计模式中常用的一部分之外(一些设计模式的思想在C#语言中有了更简单的实现,一些设计模式不是很常用)还可能会介绍一些其它有用的设计模式。在这些文章中,我不会过多去说...
这是在线EGAP学习日书籍的资料库,其中包括可帮助研究人员学习如何设计和分析来自随机现场实验的数据的材料。 贡献 我们希望任何人都能改善这项工作。 请随时在发表想法。 也可以随意进行和修改,并提出拉取请求。 ...
HttpWatch是强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能....现在httpwatch也可以集成到火狐浏览器中 --摘自百度百科