一、饿汉式
public class SingletonDemo01 {
private static SingletonDemo01 instance = new SingletonDemo01();
public static SingletonDemo01 getInstance() {
return instance;
}
}
二、懒汉式
public class SingletonDemo02 {
private static SingletonDemo02 instance;
public static SingletonDemo02 getInstance() {
if (instance == null) {
instance = new SingletonDemo02();
}
return instance;
}
}
三、懒汉式—双重检查锁
public class SingletonDemo03 {
private static volatile SingletonDemo03 instance;
public static SingletonDemo03 getInstance() {
if (instance == null) {
synchronized (SingletonDemo03.class) {
if (instance == null) {
instance = new SingletonDemo03();
}
}
}
return instance;
}
}
四、懒汉式—静态内部类
public class SingletonDemo04 {
private static class SingletonClassInstance {
private static final SingletonDemo04 instance = new SingletonDemo04();
}
public static SingletonDemo04 getInstance() {
return SingletonClassInstance.instance;
}
}
五、枚举类
public enum SingletonDemo05 {
INSTANCE;
}