/**
* 单例模式
* @author liu
*
*/
public class Singleton {
private Singleton(){}
private static Singleton singleton = null;
//懒汉式1:在方法上面加入同步块,每次都得同步,影响性能
public static synchronized Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
//懒汉式2:确保只有第一次调用单利才会同步
public static Singleton getInstance1(){
if(singleton == null){
synchronized (Singleton.class) {
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
//懒汉式3:没有性能消耗
private static class LazySingleton{
public static final Singleton ss = new Singleton();
}
public static final Singleton getInstance2(){
return LazySingleton.ss;
}
//饿汉式:在类初始化时,已自行初始化完成
public static volatile Singleton ss = new Singleton();
public static Singleton getInstance3(){
return ss;
}
}
算法题1:单例模式
最新推荐文章于 2023-06-01 09:52:47 发布