单例模式 - 5种实现方式

1、饿汉。线程安全,类装载时就实例化。

public class SingleInstance {

    private SingleInstance(){}

    private static SingleInstance mSingleInstance = new SingleInstance();

    public static SingleInstance getInstance(){
        return mSingleInstance;
    }

}

2、懒汉。懒加载,效率较低。

public class SingleInstance {

    private SingleInstance(){}

    private static SingleInstance mSingleInstance;

    public static synchronized SingleInstance getInstance(){
        if (mSingleInstance == null) {
            mSingleInstance = new SingleInstance();
        }
        return mSingleInstance;
    }
}

3、双重校验锁。使用volatile变量,轻量级的同步机制。

public class SingleInstance {

    private SingleInstance(){}

    private volatile static SingleInstance mSingleInstance;

    public static SingleInstance getInstance(){
         
        if (mSingleInstance == null) {
            synchronized (SingleInstance.class) {
                if (mSingleInstance == null) {
                    mSingleInstance = new SingleInstance();
                }
            }
        }
        return mSingleInstance;
    }
 }

4、静态内部类

public class SingleInstance {

    private SingleInstance(){}

    public static SingleInstance getInstance(){
        return SingleHolder.instance;
    }

    private static class SingleHolder {
        private static SingleInstance instance = new SingleInstance();
    }

}

5、枚举

public enum SingleInstance {
    INSTANCE;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,285评论 4 34
  • 1 场景问题# 1.1 读取配置文件的内容## 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相...
    七寸知架构阅读 6,872评论 12 68
  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,529评论 1 8
  • 单例模式的实现 单例模式的实现一般来说有2种方式:懒汉式(延迟加载)、饿汉式(非延迟加载)。 1. 饿汉式(非延迟...
    JerryL_阅读 977评论 0 3
  • 有那么的一个人,我很自信,你找到我,绝对是你的幸运。我没有不良恶习,我有满满的正能量。有句名言,上帝为你关闭一扇门...
    淡水云烟2017阅读 185评论 0 0