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

延迟加载线程安全的单例模式

阅读更多
public class ThreadSafeSingleton {
        /**
         *volatile 具有synchronized的可见特性,
         *也就是说线程能够自动发现volatitle修饰属性的最新值
         */
	private volatile static ThreadSafeSingleton instance = null;
	
	private ThreadSafeSingleton() {
		
	}
	
	public ThreadSafeSingleton getInstance() {
		if (instance == null) {
			synchronized (ThreadSafeSingleton.class) {
				instance = new ThreadSafeSingleton();
			}
		}
		return instance;
	}
}


另外一种写法
public class LazyLoadedSingelton {
	private LazyLoadedSingelton() {
		
	}
	
	private static class LazyHolder {
		private final static LazyLoadedSingelton instance = new LazyLoadedSingelton();
	}
	
	public static LazyLoadedSingelton getInstance() {
		return LazyHolder.instance;
	}
}
分享到:
评论

相关推荐

    线程安全的单例模式

    ### 线程安全的单例模式详解 #### 一、单例模式简介 单例模式(Singleton Pattern)是软件开发中最常用的创建型设计模式之一,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。单例模式在很多场景下...

    线程安全单例

    然而,在多线程环境下,如果单例模式实现不当,则可能导致线程安全问题。因此,实现线程安全的单例模式就显得尤为重要。 #### 实现方法 给定的代码示例采用了一种称为“懒汉式”的单例模式实现方式,同时利用了...

    浅议单例模式之线程安全(转)

    在多线程环境下,线程安全的单例模式尤为重要,因为如果不正确实现,可能会导致多个线程同时创建多个实例,违反了单例模式的基本原则。 在Java中,单例模式通常有以下几种实现方式: 1. 饿汉式(静态常量): ...

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

    饿汉式则是在类加载时就创建实例,保证了线程安全但牺牲了延迟初始化的优势;DCL模式结合了两者优点,既保证了线程安全,又实现了延迟初始化。 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在...

    线程相关的单例模式

    Java枚举提供了一种简洁且线程安全的方式来实现单例模式,枚举的实例化是由JVM保证的,所以在多线程环境下无需额外的同步措施。 在实现线程相关的单例模式时,我们需要关注以下几点: - 确保单例的唯一性,避免多...

    7种单例模式

    利用类加载机制保证单例,既延迟初始化,又线程安全。 ```java public class Singleton { private Singleton() {} private static class SingletonInstance { private static final Singleton INSTANCE = new ...

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

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

    java单例模式实例

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

    设计模式单例模式

    2. **饿汉式**(Eager Initialization):饿汉式单例模式是在类加载时就完成了初始化,因此,它保证了线程安全,但可能会造成资源浪费,因为无论是否使用,都会在程序启动时创建对象。Java中常通过静态内部类实现...

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

    总的来说,单例模式是一种常见的设计模式,懒汉式单例模式则是其中一种实现策略,它的主要特点是延迟加载和线程安全。在选择单例模式实现时,开发者需要根据具体需求考虑性能、线程安全以及代码简洁性等因素。

    设计模式——单例模式

    由于类加载机制保证了静态内部类的加载是线程安全的,所以这种方法既实现了延迟初始化,又保证了线程安全。 3. **枚举单例模式** ```java public enum Singleton { INSTANCE; } ``` 利用 Java 枚举的天然线程...

    几种单例模式demo

    利用Java类加载机制保证单例的唯一性,线程安全且延迟初始化。 ```java public class Singleton { private Singleton() {} private static class SingletonHolder { private static final Singleton INSTANCE ...

    单例模式详解~~单例模式详解~~

    单例模式是一种设计模式,它的...总的来说,单例模式的实现需要考虑线程安全、性能、延迟初始化等多种因素。选择哪种实现方式取决于具体的应用场景和需求。理解并正确使用单例模式对于构建高效、稳定的系统至关重要。

    Java多线程-解决单例模式中的懒汉式的线程安全问题

    ### Java多线程—解决单例模式中的懒汉式的线程安全问题 #### 一、单例设计模式的线程安全问题 ##### (1)饿汉式没有线程安全问题 **饿汉式**是一种非常典型的单例模式实现方式,其特点是在类加载时就完成了实例...

    单例模式.ppt

    通过一个静态内部类持有单例实例,内部类的加载时机延迟到第一次调用`getInstance()`时,实现了懒加载,同时也保证了线程安全,因为类加载是线程安全的。这种方式避免了同步开销,但增加了类加载的复杂性。 5. **...

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

    2. **懒汉单例模式**:延迟到第一次调用`getInstance()`方法时才进行实例化,这种实现方式解决了饿汉模式的内存浪费问题,但在多线程环境下不安全。 ```java public class Singleton { private static Singleton ...

    单例模式各种实现方式

    静态内部类在外部类被加载时不会被加载,只有当调用`getInstance`时才会加载,因此是线程安全的,同时也延迟了初始化。 ```java public class Singleton { private Singleton() {} private static class ...

    线程安全的单例模式的几种实现方法分享

    枚举在Java中天然保证了线程安全,且枚举实例的创建仅在枚举类型被加载时发生,符合单例模式的要求。 每种实现方式都有其适用场景和优缺点。选择哪种实现取决于项目需求,如对性能、延迟初始化、代码简洁性的考虑...

Global site tag (gtag.js) - Google Analytics