class Single {
private Single(){} //1.私有构造函数
private static Single s = new Single(); //2.创建本类对象
public static Single getInstance() { //3.对外提供公共的访问方法
return s;
}
}
class UseSingle {
public static void print() { //4.使用饿汉式单列
Singleton s = Singleton.getInstance();
}
}
懒汉式(面试写这种方式,多线程的问题)
//懒汉式,单例的延迟加载模式
class Single {
private Single(){}; //1.私有构造函数
private static Single s; //2.声明一个本类的引用
public static Single getInstance(){ //3.对外提供公共的访问方法
if(s == null){
//线程1,线程2
s = new Single();
return s;
}
}
}
第三种格式(很少用)
class Single {
private Single(){};
public static final Single s = new Single();//final是最终的意思,被final修饰的变量不可以被更改
}