来夸夸来夸夸双重检查!真的太妙了
看如下代码
private static volatile Sinleton instance;
public static synchronized Singleton getInstance(){
if(instance =null){
synchronized (Singleton.class){
if(instance =null){
instance new Singleton();
}
}
return instance;
}
第一次判断intance时尽管可能多个线程同时通过 在第二个同步代码块也会线程同步执行
第二次调用方法时 因为此时instance已经不为空 所以后面代码不会执行了
所以最终只会返回一个对象。