java 7种单例模式写法(最全,面试必问)
- 饿汉式(静态常量)
public class type1 {
private final static type1 instance = new type1();
private type1(){
}
public static type1 getInstance(){
return instance;
}
}
- 饿汉式(静态代码块)
public class type2 {
private static type2 type;
private type2(){}
static {
type = new type2();
}
private static type2 getInstance(){
return type;
}
}
- 懒汉式(线程不安全)
public class type3 {
private static type3 type;
private type3(){}
private static type3 getInstance(){
if(type == null){
type = new type3();
}
return type;
}
}
- 懒汉式(线程安全,同步方法)
public class type4 {
private static type4 type;
private type4(){}
private static synchronized type4 getInstance(){
if(type == null){
type = new type4();
}
return type;
}
}
- 双重检查
public class type5 {
private static volatile type5 type;
private type5(){}
private static type5 getInstance(){
if(type == null){
synchronized(type5.class){
if(type == null){
type = new type5();
}
}
}
return type;
}
}
- 静态内部类
public class type6 {
private type6(){}
private static class SingletonInstance{
private static final type6 type = new type6();
}
public static type6 getInstance(){
return SingletonInstance.type;
}
}
- 枚举
enum type7 {
INSTANCE;
}