单例模式的几种写法

1. 懒汉模式,双层检查机制

 

 

public class SingleOne {


    private static volatile Object object=null;


    /**
     * 懒汉模式
     * 双重判断模式
     * @return
     */
    public static Object getInstance(){
        if(object==null){
            synchronized (SingleOne.class){
                if(object==null){
                    object=new Object();
                }
            }
        }
        return object;
    }
}

 

2. 饿汉模式(内部类静态类)

public class SingleTwo {


    /**
     * 饿汉模式
     * 静态内部类方式
     */
    private static class ObjectHandler{
        private static Object object = new Object();
    }

    private SingleTwo(){

    }

    public static SingleTwo getInstance(){
      return   ObjectHandler.object;
    }


}

 

3. 饿汉模式(静态代码块)

 

    private static Object instance = null;

    private SingleThree(){}

    /**
     * 静态内部类方式
     */
    static {
        instance = new Object();
    }

    public static SingleThree getInstance(){
        return instance;
    }

 

posted @ 2022-04-04 18:19  纵码万水千山  阅读(33)  评论(0编辑  收藏  举报