单例模式

方式一:饿汉式

/**
 * 饿汉式
 */
public class HungryStyle {

    private static HungryStyle hungryStyle = new HungryStyle();

    private HungryStyle(){

    }

    public static HungryStyle getInstance() {
        return hungryStyle;
    }
}

方式二:懒汉式(有线程安全问题需解决)

/**
 * 解决懒汉式单例模式的线程安全问题
 */
public class LazyStyle {

    private static LazyStyle lazyStyle = null;

    private LazyStyle(){

    }

    public static LazyStyle getInstance() {
        //提高效率,当实例被创建,则后续进程不需要进入同步代码块
        if (lazyStyle == null) {
            synchronized (LazyStyle.class) {
                if (lazyStyle == null) {
                    lazyStyle = new LazyStyle();
                }
            }
        }
        return lazyStyle;
    }
}

 

posted @ 2022-02-09 15:19  Java厨师长  阅读(22)  评论(0)    收藏  举报