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

单例模式的标准写法、注意事项、作用及测试(转)

 
阅读更多
public class Singleton {

    private static volatile Singleton instance = null;

    // private constructor suppresses
    private Singleton(){
    }

    public static Singleton getInstance() {
        // if already inited, no need to get lock everytime
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }

        return instance;
    }
}

 

 

1、需要注意的点

其中需要注意的点主要有三点
(1) 私有化构造函数
(2) 定义静态的Singleton instance对象和getInstance()方法
(3) getInstance()方法中需要使用同步锁synchronized (Singleton.class)防止多线程同时进入造成instance被多次实例化
可以看到上面在synchronized (Singleton.class)外又添加了一层if,这是为了在instance已经实例化后下次进入不必执行synchronized (Singleton.class)获取对象锁,从而提高性能。

Ps: 也有实现使用的是private static Object    obj      = new Object();加上synchronized(obj),实际没有必要多创建一个对象。synchronized(X.class) is used to make sure that there is exactly one Thread in the block.

 

2、单例的作用
单例主要有两个作用
(1) 保持程序运行过程中该类始终只存在一个示例
(2) 对于new性能消耗较大的类,只实例化一次可以提高性能

分享到:
评论

相关推荐

    JavaSE单例模式各种写法.doc

    JavaSE单例模式各种写法单例模式

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

    Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...

    单例模式的八种写法比较

    android资料 单例模式的八种写法比较 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。

    单例模式的七种写法

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制数据库连接、管理缓存或者全局配置等。下面我们将详细探讨单例模式的七种...

    java-单例模式几种写法

    单例模式是软件设计模式中的一种,用于控制类的实例化过程,确保一个类只有一个实例,并提供全局访问点。...同时,需要注意的是,单例模式虽然常用,但在某些情况下可能不适合,如当需要多个实例或者类需要被继承时。

    单例模式详解.pdf

    1、掌握单例模式的应用场景。 2、掌握 IDEA 环境下的多线程调试方式。 3、掌握保证线程安全的单例模式策略。 4、掌握反射暴力攻击单例解决方案及原理分析。...5、序列化破坏单例的原理及...6、掌握常见的单例模式写法。

    单例的多种写法和说明比较

    单例模式是软件设计模式中的一种,用于控制类的实例化过程,确保一个类在整个程序运行期间只有一个实例存在。在Java、C#等面向对象语言中,单例模式被广泛应用,尤其是在需要频繁创建和销毁的对象,或者需要全局访问...

    unity中涉及的三种单例模式

    在Unity游戏开发中,单例模式是一种常用的编程设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在处理需要跨场景共享数据的情况时尤其有用,因为Unity的场景切换可能导致对象被销毁,而单例则...

    IOS 中两种单例模式的写法实例详解

    主要介绍了IOS 中两种单例模式的写法实例详解的相关资料,需要的朋友可以参考下

    单例模式七种写法_转

    NULL 博文链接:https://kaka100.iteye.com/blog/1060519

    java单例模式开发的7种写法

    java单例模式开发的7种写法,网上搜索的,可以看看

    第5天static静态关键字和单例模式.pptx

    static静态关键字和单例模式

    objective-c单例模式的完整书写方式

    Objective-C中的单例模式是一种设计模式,用于在整个应用程序中确保只有一个特定类的实例存在,并提供一个全局访问点来获取这个实例。单例模式在iOS开发中广泛应用,特别是在管理共享资源、配置设置或网络请求等场景...

    java单例模式看这一篇就够了

    深入分析java单例模式什么是单例模式单例模式的常见写法一、饿汉式单例优点缺点示例二、懒汉式单例示例1(普通写法)示例2(synchronized写法)示例3(DCL写法)示例4(内部类写法)三、注册式单例示例1(容器式)示例2(枚举式...

    封装类似thinkphp连贯操作数据库的Db类,单例模式,完全遵守tp写法的三方类,使用超级简单!

    操作数据库的时候找了很久没有找到一个合适的链式的Db类,即便有但是没有用到单例模式,老是实例化耗资源,后来便萌生了自己编写一个好用的Db类,于是开始了封装,mysql封装类是根据thinkphp的Db写法编写,...

    JavaScript设计模式之单例模式详解

    这一次重温一下《JavaScript设计模式与开发实践》,开篇为单例模式。 /** * pre 单例模式 * 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 * 应用:单例模式是一种常用的模式,有一些对象我们...

    c# 单例模式的实现方法

    c# 单例模式的实现方法 单例模式是所有设计模式中最简单的一种,主要用于确保整个应用程序中只有一个实例存在。c# 中实现单例模式有多种方法,本文将详细介绍饿汉式和懒汉式两种实现方法。 饿汉式 饿汉式是最简单...

Global site tag (gtag.js) - Google Analytics