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