单例的两种实现:
1、立即加载(饿汉模式)
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return singleton;
}
}
在方法调用之前,就已经创建好了实例,故不存在多线程安全的问题。
2、延迟加载(懒汉模式)
public class Singleton {
private static Singleton singleton ;
private Singleton(){
}
public static Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
延迟加载的缺点:在多线程的情况下,无法保证单例,会创建出“多例”。
测试:
public class Singleton {
private static Singleton singleton ;
private Singleton(){
}
public static Singleton getInstance()