為什么mInstance要進(jìn)行兩次null的判斷
if(mInstance==null)
{
synchronized(FestivalLab.class) //讓線程互斥的進(jìn)入;注意if語句;
{
if(mInstance==null)
mInstance=new FestivalLab();
}
}
if(mInstance==null)
{
synchronized(FestivalLab.class) //讓線程互斥的進(jìn)入;注意if語句;
{
if(mInstance==null)
mInstance=new FestivalLab();
}
}
2015-11-15
舉報(bào)
2015-12-27
就說第二次判空吧 線程ab都通過了第一個(gè)if?此時(shí)因?yàn)殒i的機(jī)制?假設(shè)a線程先執(zhí)行實(shí)例化了?則mInstance已經(jīng)不為空 b線程就不能再去實(shí)例化了?若沒有第二次判斷?則b線程會(huì)在a線程實(shí)例化后再次執(zhí)行實(shí)例化