浅谈java单例模式延迟加载
普通单例无法延迟加载,如:
public class Singleton
{
private Singleton()
{
System.out.println("Singleton is creating ....");
}
private static Singleton instance = new Singleton();
public static Singleton getInstance()
{
return instance;
}
}
于是我想到:
public class Singleton
{
private Singleton()
{
System.out.println("Singleton is creating ....");
}
private static Singleton instance = null;
public static synchronized Singleton getInstance()
{
if(null == instance)
{
instance = new Singleton();
}
return instance;
}
}
迭代开出几个线程去跑,测试性能,性能后者至少差上2个数量级,为实现延迟加载二引入的同步关键字反而降低了程序的性能,如何解决这个问题呢?
我们进行如下改进:
public class Singleton
{
private Singleton()
{
System.out.println("Singleton is creating ....");
}
private static class SingletonHolder
{
private static Singleton instance = new Singleton();
}
public static Singleton getInstance()
{
return SingletonHolder.instance;
}
}
类Singleton加载时,其内部类并不会被初始化,只有在getInstance方法被调用时才会加载,这种方式既可以做到延迟加载,又不用使用同步关键字,一举两得....
分享到:
相关推荐
"浅谈Spring单例Bean与单例模式的区别" 本文主要介绍了Spring单例Bean与单例模式的区别,通过对比两者的定义、实现机制和应用场景,帮助读者更好地理解这两种概念的异同。 一、单例模式的定义和实现 单例模式是一...
【深入浅出单例Singleton模式】 单例模式是一种在软件设计中常见的设计模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于控制资源的共享,如全局...
单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的...
在Java编程语言中,单例模式是一种常用的软件设计模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象时,或者对象的创建过程比较昂贵时,特别有用。单例...
《深入浅出Java设计模式》是一本专注于Java编程领域中的设计模式专著,旨在帮助开发者深化对设计模式的理解,提高代码质量和可维护性。设计模式是软件开发中经过时间检验的解决方案,它们是解决常见问题的最佳实践。...
在Java中,单例模式通常有以下几种实现方式: 1. 饿汉式(静态常量): 这种方式在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private static final Singleton INSTANCE = ...
单例的实现方式有很多种,但从最简单的实现(非延迟加载,非线程安全,效率低下),到可延迟加载,线程安全,且高效的实现,它们都有一些基本的共同点: 单例类都只有一个private的无参构造函数 类声明为sealed
单例设计模式在Java中是一种广为应用的设计模式,它的核心在于将类的构造方法私有化,从而实现对类实例化过程的控制。这种模式确保了在一个应用程序中,某个类只能产生一个实例对象,有助于限制对象的数量,并且能够...
连接MySQL数据库的步骤包括引入必要的java.sql包、加载JDBC驱动程序、创建数据库连接(Connection),以及创建数据库连接后进行操作。在Java代码中,这一过程大致如下: 1. 导入java.sql包; ```java import java....
《浅谈Java设计模式之原理简述》
浅谈Java优势,关于java优势......
在Java中,单例模式的应用广泛,尤其是在处理系统级服务、配置信息、线程池等需要全局共享的对象时。下面我们将深入探讨单例设计模式的实现方式和注意事项。 1. **饿汉式单例** 饿汉式单例在类加载时就完成了实例...
### 深入浅出设计模式之单件模式 #### 一、单件模式概述 单件模式(Singleton Pattern)是软件设计模式中最为常见的一种,它的主要目标是确保某个类只有一个实例,并提供一个全局访问点。单件模式在很多情况下都...
在Java编程中,单例设计模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象,或者对象创建代价较大,且需要全局共享资源时非常有用。在日志工具类的场景...
该资料介绍Java各类开发模式,包含以下教程:《深入浅出设计模式(中文版)》《Java单例模式》《Java设计模式-图解-附代码》《JAVA设计模式之单例模式(完整版)》《Java学习笔记(必看经典)》《Java总复习》《单例模式》...
Java的23种设计模式是软件工程中的一种经典思想,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种项目中。设计模式并不是特定的代码或库,而是对在特定情境下,如何组织代码和交互的一种描述。这些模式是...
《C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)》这个视频教程很可能深入浅出地介绍了单例模式的概念、实现方式以及在实际项目中的应用案例,对于学习和掌握单例模式是很好的参考资料。通过观看和实践...