`
kissroom112
  • 浏览: 31922 次
  • 性别: 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)是软件开发中最常用的创建型设计模式之一,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。单例模式在很多场景下...

    线程安全单例

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

    单例模式详解 1. 什么是单例模式? 1.1 单例模式的核心要素 1.2 为什么需要单例模式? 2. 单例模式的实现方式 2.1 饿汉式(静态常量) 2.2 饿汉式(静态代码块) 2.3 懒汉式(线程

    单例模式详解 1. 什么是单例模式? 1.1 单例模式的核心要素 1.2 为什么需要单例模式?...11.1.1 线程安全的延迟加载单例 11.1.2 防御反射攻击的单例 11.1.3 序列化安全的单例 11.1.4 使用单例模式的简单日志系统

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

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

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

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

    线程相关的单例模式

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

    深入Java单例模式浅析

    枚举单例模式是Joshua Bloch在《Effective Java》中推荐的实现方式,它既保证了线程安全,又避免了反射和序列化攻击,简洁且安全。 ```java public enum SingletonClass { INSTANCE; } ``` 调用方式是`...

    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 ...

Global site tag (gtag.js) - Google Analytics