美文网首页
单例模式几种方法

单例模式几种方法

作者: 大盗海洲 | 来源:发表于2019-05-05 10:48 被阅读0次

双重校验锁 DCL

public class Singleton {

    private volatile static Singleton mSingleton;

    public static Singleton getInstance(){
        if (mSingleton==null){
            synchronized (Singleton.class){//类锁与静态锁功能一致
                if (mSingleton==null){
                    mSingleton=new Singleton();
             
                }
            }
        }
        return mSingleton;
    }
}

volatile的两层含义:

  • 可见性。可见性是指在一个线程中对该变量的修改会马上由工作内存(Work Memory)写回主内存(Main Memory),所以会马上反应在其线程的读取操作中。
  • 禁止指令重排优化,但是这个语义知道jdk1.5以后才能正确工作。
    https://www.cnblogs.com/takumicx/p/9302398.html

静态内部类方式实现单例模式

public class Singleton {


    public Singleton() {
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    /**
     * 防止反序列化获取更多个对象的漏洞
     * @return
     * @throws ObjectStreamException
     */
    private Singleton readResolve()throws ObjectStreamException {
        return SingletonHolder.INSTANCE;
    }

}

枚举方式实现单例模式

public enum Singleton {
    INSTANCE;
    private SingletonTest mSingleton;

    Singleton() {
    }

    public SingletonTest getInstance() {
        if (mSingleton == null) {
            mSingleton = new SingletonTest();
        }
        return mSingleton;
    }

    public class SingletonTest {
    }
}

相关文章

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • 单例模式

    单例设计模式是几种设计模式中比较容易理解的,手写单例模式也是面试频繁问到的。下面总结一下单例模式的几种写法: //...

  • Java 单例模式

    线程安全的单例模式的几种实现方法分享线程安全的单例模式实现有几种思路,个人认为第2种方案最优雅 饿汉式 借助内部类...

  • 2018-06-19 Python中的单例模式的几种实现方式的及

    转载自: Python中的单例模式的几种实现方式的及优化 单例模式 单例模式(Singleton Pattern)...

  • 单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗

    设计模式之单例模式-单例模式的几种实现方式及小案例 本文出处:凯哥Java(wx:kaigejava) 单例模式有...

  • java 24 设计模式

    单例模式java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、...

  • java设计模式之单例模式

    单例模式属于java设计模式的一种,最常见实现方式有以下几种 懒汉、饿汉、双重检查单例、静态内部类单例。 单例模式...

  • Java设计模式—单例模式

    概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...

  • JAVA基础之单例

    JAVA单例的几种形式以及其优缺点。 Android 中的单例模式 - 简书 单例的定义:Singleton模式的...

  • 2019-08-27 java设计模式之单例模式

    1.单例模式概述 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿...

网友评论

      本文标题:单例模式几种方法

      本文链接:https://www.haomeiwen.com/subject/dhzxoqtx.html