`
huazhouji
  • 浏览: 8640 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

深入Singleton

阅读更多
Singleton: ensure a class only has one instance and provide a global point of access to it.
java 代码
 
  1. 1
  2. // 非线程安全
  3. public class Singleton{  
  4.            private static Singleton instance ;  
  5.            private Singleton(){  
  6.              super();  
  7.            }  
  8.            public static Singleton getInstance(){          
  9.               if(instance==null)   // 延迟加载,但导致了多线程同步的问题  
  10.                  instance = new Singleton();  
  11.               return instance ;  
  12.            }  
  13.  } 
  14. // 以下3种方式是线程安全的
  15. 2
  16. public class Singleton{  
  17.            private static Singleton instance = new Singleton();  //eagerly load
  18.            private Singleton(){  
  19.              super();  
  20.            }  
  21.            public static Singleton getInstance(){         
  22.               return instance ;  
  23.            }  
  24.  } 
  25. 3)  
  26. public class Singleton{  
  27.            private static Singleton instance ;  
  28.            private Singleton(){  
  29.              super();  
  30.            }  
  31.            public static  synchronized Singleton getInstance(){ //普通的同步操作,但效率低  
  32.               if(instance==null)  
  33.                  instance = new Singleton();  
  34.               return instance ;  
  35.            }  
  36.     }  
  37. 4)  
  38. public class Singleton{  
  39.            private volatile static Singleton instance ;//指定instance不放入CPU缓存  
  40.            private Singleton(){  
  41.              super();  
  42.            }  
  43.            public static Singleton getInstance(){         
  44.                   if(instance==null){  
  45.                      synchonized(Singleton.class){// 即double-checked locking  
  46.                           if(instance==null)  
  47.                              instance = new Singleton();  
  48.                       }  
  49.                   }  
  50.                return instance ;  
  51.            }  
  52.  }  

PS: #你不能继承Singleton类
       #如果有多个classLoader分别加载这个Singleton,则仍能new出多个对象实例,因为每个ClassLoader都会定义一个命名空间.
       #JDK1.2之前的环境垃圾回收器不能很好的支持自引用
分享到:
评论

相关推荐

    深入浅出单例Singleton模式

    【深入浅出单例Singleton模式】 单例模式是一种在软件设计中常见的设计模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于控制资源的共享,如全局...

    C++ 实现的singleton 模式

    下面我们将深入探讨如何在C++中实现Singleton模式。 首先,Singleton模式的核心在于控制类的实例化过程,通常通过私有构造函数和静态成员函数来实现。`Singleton.cpp`和`Singleton.h`两个文件中可能包含了以下内容...

    Singleton Pattern 源码

    本篇文章将深入探讨单例模式的实现原理、优缺点以及在Java中的常见实现方式。 首先,单例模式的核心思想是限制类的实例化过程,确保无论通过何种方式,都只能创建一个对象。实现单例模式通常有两种主要方法:饿汉式...

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

    这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...

    SingleTon的模板(template)化应用

    本文将深入探讨如何将单例模式与模板技术结合,以实现更高效、更具通用性的单例。 首先,我们需要理解单例模式的基本思想。单例模式通常包含两个关键点:一是控制类的实例化过程,只允许创建一个实例;二是提供一个...

    Java线程安全的Singleton模式:深入分析与实现

    在Java编程中,Singleton模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。线程安全的Singleton模式对于多线程环境尤为重要,因为它可以防止多个线程同时创建多个实例。本文将详细介绍...

    Loki singleton

    通过阅读和理解这个文件,你可以深入学习Loki库的内部工作原理以及如何在实际项目中应用和测试单例模式。对于C++开发者来说,掌握像Loki这样的设计模式库是非常有益的,它能帮助你更高效地实现常见的设计模式,提高...

    java Singleton单例模式

    接下来,我们将深入探讨Java Singleton模式的实现方式、优缺点以及使用场景。 一、Singleton模式的实现 1. 饿汉式(静态常量) ```java public class Singleton { private static final Singleton INSTANCE = ...

    Android Singleton单例模式Demo

    本篇文章将深入讲解如何在Android环境中实现Singleton,并通过具体的代码示例SingletonTest来帮助理解。 首先,理解单例模式的基本概念。单例模式的核心特点是限制类的实例化过程,保证全局范围内只有一个实例。在...

    Singleton模式源程序

    Singleton模式是一种设计模式,它是创建型模式的一种,用于控制类...通过分析和学习这段代码,我们可以更深入地理解Singleton模式的实现细节和在并发环境中的应用。同时,这也是一次了解和实践C++多线程编程的好机会。

    singleton demo

    本示例"SingletonDemo"将深入探讨如何在Java中实现Singleton模式。 首先,Singleton模式的核心在于限制类的实例化过程。通常,我们通过私有化构造函数来防止直接实例化。下面是一个基本的Singleton模式实现: ```...

    Singleton模式

    接下来,我们将深入探讨Singleton模式的实现方式、优缺点以及适用场景。 Singleton模式的实现主要有以下几种: 1. **饿汉式(Eager Initialization)**:在类加载时就完成了初始化,所以类加载比较慢,但获取对象...

    Singleton 单件(创建型模式)

    **Singleton 模式详解** ...通过深入理解并恰当运用 Singleton,我们可以提高代码的可维护性和可复用性。在实际开发中,要根据项目需求和场景选择合适的 Singleton 实现方式,以达到最佳的设计效果。

    单例模式(Singleton)的6种实现

    接下来,我们将深入探讨单例模式的六种常见实现方式。 1. **饿汉式(静态常量)** 这是最简单的单例实现,它在类加载时就完成了初始化,所以类加载速度会更快,而且线程安全。代码如下: ```java public class ...

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

    在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于控制类的实例化过程,防止多处代码创建多个实例导致资源的浪费或者状态不一致的问题。在...

    singleton Bean 创建 prototype Bean

    这两种作用域的使用场景和实现方式都有所不同,下面我们将深入探讨它们的原理和区别。 Singleton Bean是Spring中最常见的作用域,它的特点是无论多少次从容器中获取,都只会返回同一个实例。这种设计模式被称为单例...

    Singleton.rar

    通过分析和学习这个源码,你可以更深入地理解单例模式的实现方式,以及在实际项目中如何应用和优化单例模式。此外,由于作者提到希望完成23种设计模式,这表明这个示例可能是系列教程的一部分,你可以期待找到更多...

    C++设计模式代码资源12_Singleton.zip

    《C++设计模式:深入解析Singleton模式》 Singleton模式,作为设计模式中最为经典的一种,是一种创建型设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。在C++编程中,Singleton模式的应用...

    singleton单例最全实现方式代码.rar

    在Java编程语言中,"单例模式"是一种常用的...这个压缩包中的代码示例可以帮助开发者深入理解各种单例实现方式的优缺点,并根据实际需求选择合适的方式。通过阅读和分析这些代码,可以提升对单例模式的掌握和应用能力。

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

    本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式主要用于控制类的实例化过程,防止因为多个实例导致的资源...

Global site tag (gtag.js) - Google Analytics