public class Single {
private static Single instance=new Single();
private Single(){}
public static Single getInstance(){
return instance;
}
}
二、懶漢式
特性:延遲創(chuàng)建,線程不安全
public class Single {
private static Single instance;
private Single(){}
public static Single getInstance(){
if(instance==null){
instance=new Single();
}
return instance;
}
}
三、加鎖的懶漢式
特性:延遲創(chuàng)建 線程安全 同步情況下效率低
public class Single {
private static Single instance;
private Single(){}
public synchronized static Single getInstance(){
if(instance==null){
instance=new Single();
}
return instance;
}
}
四、雙重驗證式懶漢式
特性:延遲創(chuàng)建 線程安全 同步情況下效率高
public class Single {
private static Single instance;
private Single(){}
public static Single getInstance(){
if(instance==null){
synchronized (Single.class) {
if (instance==null) {
instance=new Single();
}
}
}
return instance;
}
}
五、類加載方式
特性:延遲創(chuàng)建 線程安全 同步情況下效率高
public class Single {
private Single(){}
private static class ClassHolder{
private static Single instance=new Single();
}
public static Single getInstance(){
return ClassHolder.instance;
}
}