常见的单例写法

Posted lisin-lee-cooper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见的单例写法相关的知识,希望对你有一定的参考价值。

/**
 * 饿汉式
 * 类加载的时候完成实例化,线程安全
 * @Date 2022-02-24 11:38
 */
public class HungaryHanStyle 

    private static HungaryHanStyle instance = new HungaryHanStyle();

    private HungaryHanStyle() 

    

    public static HungaryHanStyle getInstance() 
        return instance;
    
    

/**
 *  1分配内存空间
 *  2 初始化对象
 *  3 将对象指向刚分配的内存空间
 *  volatile 避免 2和3 指令重排序
 * @Date 2022-02-24 11:42
 */
public class LazyStyle 

    private static volatile LazyStyle instance;

    private LazyStyle() 

    

    public static LazyStyle getInstance() 
        if (instance == null) 
            synchronized (LazyStyle.class) 
                if (instance == null) 
                    instance = new LazyStyle();
                
            
        
        return instance;
    

/**
 * 静态内部类是
 * 实现懒加载、线程安全,而且JVM还保持了指令优化的能力。
 *
 * @Date 2022-02-24 14:06
 */
public class InnerStyle 

    private InnerStyle() 

    

    private static class InnerSingleton 
        private static final InnerStyle instance = new InnerStyle();
    

    public static InnerStyle getInstance() 
        return InnerSingleton.instance;
    

public enum EnumStyle 

    INSTANCE;


以上是关于常见的单例写法的主要内容,如果未能解决你的问题,请参考以下文章

性能比较好的单例写法

一日一技:Python 下面最简单的单例模式写法

有一鲜为人知的单例写法-ThreadLocal

另一鲜为人知的单例写法-ThreadLocal

还有一鲜为人知的单例写法-ThreadLocal

还有一鲜为人知的单例写法-ThreadLocal