饿汉式
public class Single{
//立即加载==饿汉式
private static Single single = new Single();
//私有化构造方法
private Single(){
}
public static Single getSingle(){
return single;
}
}
懒汉式
public class Single{
private static Single single;//只声明,不创建
private Single(){//私有化构造方法
}
public static Single getSingle(){
//延迟加载
if(single != null){
}else{
single = new Single();
}
return single;
}
}
上述懒汉式,存在线程安全的问题
解决方法 1 在getSingle()方法上增加synchronized关键字,但是这样的效率太低了
双重锁DCL
public class Single{
private volatile static Single single;
private Single(){}
public static Single getSingle(){
if(single != null){
}else{
synchronized(Single.class){
if(single == null){
single = new Single();
}
}
}
return single;
}
}