//饿汉式
class Single1{
private static final Single1 instance = new Single1();
private Single1(){}
public static Single1 getInstance() {
return instance;
}
}
//懒汉式(线程不安全)
class Single2{
private static Single2 instance = null;
private Single2(){}
public static Single2 getInstance() {
if(instance == null){
instance = new Single2();
}
return instance;
}
}
//懒汉式(加锁)
class Single3{
private static Single3 instance = null;
private Single3(){}
public static synchronized Single3 getInstance(){
if(instance == null){
instance = new Single3();
}
return instance;
}
}
//懒汉式(双重检查)
class Single4{
private static Single4 instance = null;
private Single4(){}
public static Single4 getInstance() {
if(instance == null){
synchronized (Single4.class){
if(instance == null){
instance = new Single4();
}
}
}
return instance;
}
}
//懒汉式(枚举实现)
enum Single5{
INSTANCE();
private String msg;
private Single5(){
System.out.println("单例初始化");
}
}