这就是懒汉式
public class Emperor {
private static Emperor emperor = null;
//设置成不能外部创建
private Emperor(){
}
//在内部生成对象
public static Emperor getInstance(){
if(emperor==null){
emperor=new Emperor();
}
return emperor;
}
public void name(){
System.out.println("我就是....");
}
}
public class Main {
public static void main(String[] args) {
Emperor emperor = Emperor.getInstance();
emperor.name();
}
}
但是懒汉式有风险
如果有两个线程 A B 如果A执行到 emperor=new Emperor();正在分配内存,线程B执行到 if(emperor==null) 这种情况是存在的 ,但是检查代码又没什么问题 ,这种是最让人抓狂的,又不是必现的,
于是就有了下面的恶汉式 ,只要调用这个类就创建对象
public class Emperor {
private static Emperor emperor = new Emperor();
private Emperor(){
}
public synchronized static Emperor getInstance(){
return emperor;
}
public void name(){
System.out.println("我就是....");
}
}