1 懒汉 线程不安全
public class SingletonDemo1 {
private static SingletonDemo1 instance; ------创建一个私有静态的单例变量private SingletonDemo1(){} ------创建私有的默认构造方法
public static SingletonDemo1 getInstance(){ ------创建共有静态的get()方法
if (instance == null) { ------单例对象为空 创建单例
instance = new SingletonDemo1();
}
return instance; -----返回单例对象
}
}
2 懒汉 线程安全
public class SingletonDemo2 {
private static SingletonDemo2 instance;
private SingletonDemo2(){}
public static synchronized SingletonDemo2 getInstance(){
if (instance == null) {
instance = new SingletonDemo2();
}
return instance;
}
}
3 饿汉 线程不安全
public class SingletonDemo3 {
private static SingletonDemo3 instance = new SingletonDemo3();
private SingletonDemo3(){}
public static SingletonDemo3 getInstance(){
return instance;
}
}
4双重校验锁 线程安全
public class SingletonDemo4 {
private volatile static SingletonDemo4 singletonDemo4;
private SingletonDemo4(){}
public static SingletonDemo4 getSingletonDemo4(){
if (singletonDemo4 == null) { -----进行双重校验
synchronized (SingletonDemo4.class) {
if (singletonDemo4 == null) {
singletonDemo4 = new SingletonDemo4();
}
}
}
return singletonDemo4;
}
}
借鉴连接------https://www.cnblogs.com/Ycheng/p/7169381.html