`
yonglin4605
  • 浏览: 188501 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

单例模式中的双重锁定 及新型单例设计

    博客分类:
  • JAVA
阅读更多

原文:http://xuhengfei.com/notebook/2010/02/java-singleton/

在单例模式中有一种延时实例化方法,
当调用get方法获取单例时,判断是否已经实例化,如果没有,则创建该实例并返回。如果有直接返回。
在这个过程中如果考虑多线程并发问题,我们需要用双重锁定来保证该实例的单一性。
public class Singleton  {

	private Singleton (){
		
	}
	private static Singleton  main;
	/**
	 * 双重锁定
	 * @return
	 */
	public static Singleton  get(){
		if(main==null){
			synchronized (Singleton.class) {
				if(main==null){
					main=new Singleton();
				}
			}
		}
		return main;
	}
	
	public static void main(String[] args) throws Exception{
		System.out.println(Singleton.get().toString());
	}
 
	@Override
	public String toString() {
		return "I am Singleton ";
	}
}



单例模式的另一种实例化方法是在静态代码块中直接创建实例,这样就不需要考虑多线程的问题了。
public class Singleton  {

	private Singleton (){
		
	}
	private static Singleton  main=new Singleton();
}


今天读到一篇创新型的单例设计,记录一下
public class Singleton {   
  
  static class SingletonHolder {   
    static Singleton instance = new Singleton();   
  }   
  
  public static Singleton getInstance() {   
    return SingletonHolder.instance;   
  }   
  
}  
分享到:
评论

相关推荐

    43丨单例模式(下):如何设计实现一个集群环境下的分布式单例模式?1

    单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态方法获取该类的唯一实例。单例模式的唯一性通常是在进程范围内,...

    单例模式与双重检测

    单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制数据库连接、日志记录、线程池管理等,确保了资源的有效管理和高效利用。...

    设计模式单例模式和工厂模式综合应用

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    设计模式——单例模式

    单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于控制共享资源,如数据库连接池、线程池或者日志系统等,确保这些资源在整个应用程序中只被创建一次。 单例模式的核心...

    设计模式之单例模式(结合工厂模式)

    单例模式的核心在于控制类的实例化过程,常见的实现方式有懒汉式、饿汉式和双重检查锁定(DCL)等。懒汉式是在类被加载时并不创建实例,而是在第一次调用getInstance方法时才创建;饿汉式则是在类加载时就创建实例,...

    设计模式单例模式

    单例模式是软件设计模式中的一种基础且广泛应用的模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象,且对象创建成本较高,或者需要共享资源的情况下非常...

    23钟设计模式之单例模式

    单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...

    设计模式之单例模式源码demo

    3. **双重检查锁定(DCL,Double Check Locking)单例模式**:结合了饿汉模式和懒汉模式的优点,既延迟了初始化,又保证了线程安全。在多线程环境下,只有在`instance`为`null`时才会进入同步块,避免了不必要的同步...

    设计模式 中的 单例模式和观察者模式

    在Java中,可以使用双重检查锁定(Double-Check Locking)来实现线程安全的单例: ```java public class Singleton { private static volatile Singleton instance; private Singleton() {} public static ...

    C++单例设计模式,单例模式

    C++单例设计模式,单例模式 C++单例设计模式,单例模式

    Java设计模式之单例模式的七种写法

    3、懒汉式单例(双重检查锁定) public class Singleton3 { private Singleton3() {} private static Singleton3 single = null; public static Singleton3 getInstance() { if (single == null) { ...

    C#单例模式详解 C#单例模式详解C#单例模式详解

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...

    大话设计模式--Singleton(单例模式)

    单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...

    使用C++11实现线程安全的单例模式

    在C++编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。线程安全的单例模式在多线程环境下尤其重要,因为不正确的实现可能导致多个线程创建多个实例,这违反了单例模式...

    设计模式C++学习之单例模式(Singleton)

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...

    C++设计模式-单例模式

    李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。

    单例模式的要点及模式

    单例模式是软件设计模式中的一种经典模式,其核心思想在于限制类的实例化过程,确保在整个应用程序中只有一个实例存在。这种模式常用于管理共享资源,例如数据库连接、线程池或者全局配置等,以避免资源浪费和状态...

    设计模式——单例模式(懒汉模式)

    在Java中,懒汉式的单例模式通常通过双重检查锁定(Double-Check Locking,DCL)来实现,这是一种线程安全的方式。下面是一个简单的DCL实现的懒汉式单例模式代码示例: ```java public class Singleton { private ...

    设计模式之单例模式Java实现和类设计图

    在Java中,实现单例模式有多种方法,包括懒汉式(线程不安全)、饿汉式、双重检查锁定(DCL)以及枚举方式。其中,DCL和枚举方式是推荐的,因为它们既保证了线程安全,又避免了不必要的同步开销。 单例模式的Java...

Global site tag (gtag.js) - Google Analytics