问答详情
源自:2-2 创建Framgment展示节日列表

为什么mInstance要进行两次null的判断

if(mInstance==null)
{
synchronized(FestivalLab.class) //让线程互斥的进入;注意if语句;
{
if(mInstance==null)
mInstance=new FestivalLab();
}

}

提问者:guoweibin 2015-11-15 16:43

个回答

  • max1210
    2015-12-27 21:45:50

    就说第二次判空吧 线程ab都通过了第一个if 此时因为锁的机制 假设a线程先执行实例化了 则mInstance已经不为空 b线程就不能再去实例化了 若没有第二次判断 则b线程会在a线程实例化后再次执行实例化