设计模式


单例模式:

懒汉式:

真正需要使用对象时才去创建该单例类对象

public class Singleton {

private static volatile Singleton singleton;

private Singleton(){}

public static Singleton getInstance() {
    if (singleton == null) {  
        // 线程A和线程B同时看到singleton = null,如果不为null,则直接返回singleton
        synchronized(Singleton.class) { 
            // 线程A或线程B获得该锁进行初始化
            if (singleton == null) { 
                // 其中一个线程进入该分支,另外一个线程则不会进入该分支
                singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}

饿汉式:

类加载时已经创建好该单例对象,等待被程序使用

public class Singleton{

private static final Singleton singleton = new Singleton();

    private Singleton(){}

    public static Singleton getInstance() {
        return singleton;
    }
}

  目录