单例设计模式(懒汉式,饿汉式)

package cn.mylove;

/*
 *
 * //饿汉式
 public class Demo {
 private static final Demo d = new Demo();

 private Demo() {
 }

 public static Demo getInstance() {

 return d;

 }
 }

 */

//懒汉式
    //特点:延时加载
//在多线程访问时就会产生安全隐患,所以要用synchronized
/*public static synchronized Demo getInstance() {
 if (d == null) {
 d = new Demo();
 }
 return d;

 }*/
//懒汉式加了锁会比较低效,所以要用同步代码块,同时用双重判断,解决每次都访问所的低效问题

public class Demo {
    private static Demo d = null;

    private Demo() {
    }

    public static Demo getInstance() {
        if (d == null) {
            synchronized (Demo.class) {
                if (d == null) {
                    d = new Demo();
                }

            }
        }

        return d;

    }
}

你可能感兴趣的:(单例设计模式(懒汉式,饿汉式))