if(mInstance==null){synchronized(FestivalLab.class) //让线程互斥的进入;注意if语句;{if(mInstance==null)mInstance=new FestivalLab();}
}
就说第二次判空吧 线程ab都通过了第一个if 此时因为锁的机制 假设a线程先执行实例化了 则mInstance已经不为空 b线程就不能再去实例化了 若没有第二次判断 则b线程会在a线程实例化后再次执行实例化