/**
* 懒汉模式,双重锁检查
* 类加载进来,没有创建对象。当调用getInstance方法时,才创建对象。
* @author WangSai
*
*
*/
public class SingleTon2 {
private static volatile SingleTon2 singleTon2 = null;
public static SingleTon2 getInstance() {
if (singleTon2 == null) {
synchronized (SingleTon2.class) {
if (singleTon2 == null) {
singleTon2 = new SingleTon2();
}
}
}
return singleTon2;
}
private SingleTon2() {
}
}
/**
* 饿汉模式
* 类一加载,就创建对象。
* @author WangSai
*
*/
public class Singleton2 {
private static Singleton2 s = new Singleton2();
//私有化构造函数
private Singleton2(){
}
//对外提供访问函数
public static Singleton2 getInstance(){
return s;
}
}
/**
* 单例,静态内部类
* Created by WangSai on 2021/8/1
*/
public class SingleTon3 {
private SingleTon3() {
}
private static class HOLDER {
private static final SingleTon3 INSTANCE = new SingleTon3();
}
public static SingleTon3 getInstance() {
return HOLDER.INSTANCE;
}
}
/**
* 枚举模式实现单例
* Created by WangSai on 2021/8/2
*/
public enum SingleTon4 {
INSTANCE;
public void doSomething() {
}
}