public class Singleton {
private volatile static Singleton singleton;//第一步检查
public static Singleton getInstance() {
if (singleton == null) {//第二步检查
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
饿汉式(先创建出实例)
class Singleton{
//静态实例
private static Singleton singleton = new Singleton();
//构造函数
private Singleton(){};
public Singleton getInstance(){
return singleton;
}
}
枚举
enum Singleton{
INSTANCE; //枚举成员
private Singleton singleton;
private Singleton{
singleton = new Singleton();
}
public Singleton getInstance(){
return singleton;
}
}
//获得实例:Singleton.INSTANCE.getInstance();
静态内部类
class Singleton{
//静态内部类
private static calss SingletonHolder{
private static final Singleton singleton = new Singleton();
}
//构造函数
private Singleton(){};
public static final Singleton getInstance(){
return SingletonHolder.singleton;
}
}
静态代码块
class Singleton{
//静态变量
private static Singleton singleton = null;
//构造函数
private Singleton(){};
//静态代码块
static{
singleton = new Singleton();
}
public Singleton getInstance(){
return singleton;
}
}
来源:CSDN
作者:Q___0
链接:https://blog.csdn.net/Q___0/article/details/103460232