`
javahacker2
  • 浏览: 42016 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式:单例模式singleton示例分析

    博客分类:
  • Java
 
阅读更多
public class singleton {
	private singleton(){
		System.out.println("构造方法被调用!");
	}
	private  static class  singletonHolder{
		private static singleton instance = new singleton();
	}
	public static singleton getInstance(){
		return singletonHolder.instance;
	}
	public static void main(String[] args) {
		new Thread(new ThreadTest()).start();
	}
	static  class ThreadTest implements Runnable{
		@Override
		public  void run() {
			long beginTime = System.currentTimeMillis();
			for(int i=0;i<100000;i++){
				singleton.getInstance();
			}
			System.out.println("花费时间为:"+(System.currentTimeMillis()-beginTime));
		}
	}
  

	
}

 以上为单例模式的比较经典的实现,使用内部类的实现方式即可以做到延迟加载,也不必使用同步关键字,是一个比较完善的实现。

我以前可能没有注意优化过,一般实现时为了延迟加载我们会使用同步关键字,但是大大降低了性能,经过测试,使用synchronized跟不使用时时间上差两个数量级,但以上这种实现可以性能比较好,当然,以上实现还是不能完全保证只生成一个单例,比如使用反射机制,强行调用私有构造方法,还是能生成多个实例,现不讨论这种极端方式,但还是一些合法的方法,可以导致生成多个单例类的实例。

在进行序列化跟反序列化时可能会导致生成多个实例,如果有这种情况,就要注意,可以避免!

分享到:
评论

相关推荐

    JS 设计模式之:单例模式定义与实现方法浅析

    单例模式(Singleton)属于创建型的设计模式,它限制我们只能创建单一对象或者某个类的单一实例。 通常情况下,使用该模式是为了控制整个应用程序的状态。在日常的开发中,我们遇到的单例模式可能有:Vuex 中的 ...

    Design-Patterns-Singleton:单例设计模式示例

    这是单例设计模式的基本示例。 您将在此仓库中找到两个示例。 首先是线程安全的单例,其次不是。 测试的输出是: synchronizedTest Started... Thread 2 instance is : ...

    Java设计模式单例模式(Singleton)用法解析

    主要介绍了Java设计模式单例模式(Singleton)用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    场景管理单例模式1

    单例模式(Singleton Pattern)是一种常用的设计模式,在 Unity3D 中也可以使用这种模式来管理场景。在这个示例中,我们将实现一个场景管理单例模式,用于管理游戏中的场景。 单例模式的定义 单例模式是一种创建型...

    单例模式的Java示例代码

    通过对配置文件进行读写的例子,演示了如何应用单例模式来设计类及其之间的关系。

    C#23种设计模式_示例源代码及PDF

    单例模式: 而且自行实例化并向整个系统提供这个实 单例模式 单例模式确保某一个类只有一个实例, 例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。 结构型模式 6、ADAPTER —在朋友聚会上碰到...

    研磨设计模式(完整带书签).part2.pdf

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望...

    Java 23种设计模式全归纳

    本资源包汇总了Java中23种经典设计模式的详细介绍和使用示例,旨在帮助开发者系统性地学习和掌握设计模式在软件开发中的应用。这些设计模式分为三大类:创建型模式、结构型模式和行为型模式,每种模式都包括定义、...

    C#设计模式.PDF

    C#设计模式(7)-Singleton Pattern 50 一、 单例(Singleton)模式 50 二、 Singleton模式的结构: 51 三、 程序举例: 51 四、 在什么情形下使用单例模式: 52 五、 Singleton模式在实际系统中的实现 53 六、 C#...

    php设计模式之单例、多例设计模式的应用分析

    单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量。如模式名称,单例只能实例化一次,只有一个对象,多例模式可以多次实例化。基于Singleton的特性,我们经常用Singleton配置应用程序并...

    与Spring技术相关的J2EE设计模式

    共讲解了5种设计模式:工厂模式,抽象工厂,单例设计模式Singleton,业务代理(Business Delegate)类模式(或者:Proxy模式),模板(Template)方法模式. 从设计思路,特点,作用,常用方法等多方面讲解,有示例代码

    23种设计模式全解

    在Java中,我们可以使用设计模式来解决实际问题,以下是使用Java实现的23种设计模式的示例代码: ... (省略其他代码) 设计模式是软件工程的基石,它可以使代码更加可重用、可维护和可扩展。通过学习和掌握设计模式...

    C#设计模式大全

    C#设计模式(7)-Singleton Pattern 一、 单例(Singleton)模式 二、 Singleton模式的结构: 三、 程序举例: 四、 在什么情形下使用单例模式: 五、 Singleton模式在实际系统中的实现 六、 C#中的Singleton...

    研磨设计模式(完整带书签).part1.pdf

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望...

    使用设计模式中的Singleton单例模式来开发iOS应用程序

    主要介绍了使用设计模式中的Singleton单例模式来开发iOS应用程序的例子,示例代码为传统的Objective-C语言,需要的朋友可以参考下

    研磨设计模式-part2

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式-part4

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式-part3

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式.part3(共4个)

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式.part2(共4个)

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

Global site tag (gtag.js) - Google Analytics