首先,我们来看看单例模式的定义,单例模式是指:保证在一个线程中,某个类有且仅有一个实例。
1、饿汉式实现单例模式
这种方式之所以称之为饿汉式,是因为在代码中一开始就创建了这个类的实例。
public class Hungry {
private Hungry() {
}
private static final Hungry HUNGRY = new Hungry();
public static Hungry getInstance() {
return HUNGRY;
}
}
2、静态内部类实现单例模式
public class Holder {
private Holder() {
}
public static Holder getInstance() {
return InnerClass.HOLDER;
}
private static class InnerClass{
private static final Holder HOLDER = new Holder();
}
}
3、懒汉式实现单例模式
public class Singleton {
private Singleton(){
}
private volatile static Singleton INSTANCE;
// 双重锁校验模式 懒汉式单例
public Singleton getInstance() {
if(INSTANCE==null) {
synchronized (Singleton.class){
if(INSTANCE==null){
INSTANCE = new Singleton();//不是一个原子性操作
}
}
}
return INSTANCE;
}
}
4、枚举实现单例模式
public enum EnumSingle {
INSTANCE;
public EnumSingle getInstance() {
return INSTANCE;
}
}