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

设计模式之Double check

阅读更多
double check可用于当一个field的创建比较费时,而该field又不一定被使用的情况。

	private Object lock = new Object();
	private volatile String content;
	public String getContent() {
		String t = content;
		if (t == null) {
			synchronized (lock) {
				t = content;
				if (t == null) {
					t = content = "InitString";
				}
			}
		}
		return t;
	}


注意这里volatile的使用。
分享到:
评论

相关推荐

    java代码-double check单例模式

    在Java编程中,单例模式是一种常用的创建型设计模式,它的目标是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象,且对象之间存在大量的交互时非常有用,因为它可以减少内存...

    java设计模式高清教程

    比如,在使用单例模式时,可能会讨论线程安全问题和双重检查锁定(Double-Check Locking);在介绍装饰器模式时,可能会讲解如何动态地增加或改变对象功能,以及与继承的比较;在探讨观察者模式时,会讲解事件驱动...

    设计模式java

    单例模式是最简单的创建型设计模式之一,它保证一个类只有一个实例,并提供一个全局访问点。在Java中,实现单例模式有多种方式,最简单的是直接在类中定义一个私有静态实例并提供一个公有的静态方法来获取这个实例。...

    Java中的双重检查(Double-Check)详解

    Java中的双重检查(Double-Check)是一种用于实现线程安全单例模式的设计策略,它的核心思想是在确保对象只被初始化一次的同时,尽可能地减少同步的使用以提高性能。然而,在早期的Java版本中,双重检查模式存在一些...

    设计模式讲解+例子分析

    为了优化性能,可以使用双重检查锁定(Double-Check Locking)模式,即在创建实例前进行两次检查`instance`是否为`null`。这样做减少了不必要的同步,但仍然存在并发问题,因为JVM可能先分配内存再初始化对象,导致...

    Java多线程设计模式_清晰完整PDF版 Java多线程设计模式源代码

    总之,Java多线程设计模式是每个Java开发者必备的技能之一。深入学习并熟练运用这些模式,将有助于你编写出更高效、稳定和易于扩展的多线程应用程序。这个PDF版教程和源代码集合是你学习多线程设计模式的理想资源,...

    head first java 设计模式源代码

    《Head First Java设计模式源代码》是一本专为初学者设计的编程书籍,它通过直观易懂的方式介绍了Java编程中的设计模式。设计模式是软件工程中的一种最佳实践,是解决常见问题的经验总结,旨在提高代码的可重用性、...

    java设计模式实例

    在Java中,通常使用双重检查锁定(Double-Check Locking)或静态内部类方式来实现。 2. **工厂模式(Factory)**:提供一个接口用于创建一组相关或相互依赖的对象,而无需指定它们的具体类。简单工厂、工厂方法和...

    C# 设计模式(用常用的设计模式编写C#程序)

    在C#中,可以使用静态成员或双检锁(Double-Check Locking)实现单例,确保线程安全的同时避免不必要的资源消耗。 二、工厂模式 工厂模式提供了一种创建对象的抽象方法,使得代码与具体类的实例化过程解耦。在C#中...

    Java常用设计模式

    双检锁(Double-Check Locking)和枚举单例是两种常见的实现方式。 2. **门面模式**:为复杂的子系统提供一个统一的、简单的接口。它降低了客户端与子系统之间的耦合,使得子系统的结构可以独立于客户端进行变化。 ...

    23种设计模式之C#版本.pdf

    这可以通过双重检查锁定(Double-Check Locking)来实现。如果使用`volatile`关键字确保实例变量的线程可见性,则代码如下: ```csharp class MultiThread_Singleton { private static volatile MultiThread_...

    Csharp设计模式

    在C#中,通常通过私有构造函数和静态方法实现,例如使用`Lazy<T>`类或双检锁(Double-Check Locking)模式。 2. 工厂模式:提供一个创建对象的接口,但让子类决定实例化哪个类。C#中的抽象工厂可以创建一系列相关的...

    NET设计模式

    在.NET中,我们可以使用静态类或双重检查锁定(Double-Check Locking)来实现单例。这个模式常用于控制资源的共享,例如数据库连接池或日志服务。 二、工厂模式 工厂模式提供了一种创建对象的方式,避免直接实例化...

    单例设计模式五种例子

    单例设计模式是一种在软件设计中广泛使用的设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象,或者对象的创建代价高昂时特别有用,例如数据库连接、线程池等。在C#中...

    C#面向对象设计模式纵横谈-1.Singleton 单件(创建型模式)

    Singleton模式的实现有多种变体,例如懒汉式(Lazy Initialization)、饿汉式(Eager Initialization)和双检锁/双重检查锁定(Double-Check Locking)。懒汉式是在第一次使用时才创建实例,而饿汉式则是在类加载时...

    java之设计模式--各种设计模式解析

    实现单例通常采用双重检查锁定(Double-Check Locking)或静态内部类等方式,确保线程安全且只创建一次实例。 接下来是命令模式。命令模式将请求封装为一个对象,使得可以使用不同的请求、队列请求、或者支持撤销...

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    Java中常使用双重检查锁定(Double-Check Locking)或枚举方式来实现线程安全的单例。 ```java // 双重检查锁定示例 public class Singleton { private volatile static Singleton instance; private Singleton...

    Head First 设计模式

    《Head First 设计模式》是一本深受欢迎的设计模式教程,以其独特的视觉呈现方式和易于理解的语言,让初学者也能快速掌握设计模式的核心概念。设计模式是软件开发中的宝贵经验总结,是解决常见问题的最佳实践。这...

    设计模式的禅

    《设计模式的禅》这本书是软件开发领域的一部经典之作,它深入浅出地介绍了设计模式这一编程思想的精髓。设计模式是经验丰富的开发者在解决常见问题时所形成的最佳实践,是面向对象设计中的精华。Java作为广泛使用的...

Global site tag (gtag.js) - Google Analytics