android之單例模式:懶漢式和餓漢式的區別
阿新 • • 發佈:2019-02-10
單例模式:懶漢式和餓漢式
餓漢式:執行緒安全:構造方法私有化:推薦使用
public class Singleton{
private static Singleton singleton = new Singleton ();//類建立時,就建立一個靜態物件,之後不會再改變
private Singleton (){}
public Singleton getInstance(){return singletion;}
}
懶漢式:執行緒不安全:若生成例項的時候若不加synchronized(執行緒同步),會發生執行緒不安全:如:當一個執行緒執 行到(2)時,還未生成物件,另一個執行緒執行(1);這時就會發生執行緒不安全
public class Singleton{
private static Singleton singleton = null;
public static synchronized getInstance(){
if(singleton==null){//(1)
//(2)
singleton = new Singleton();//(3)
}
return singleton;
}
}
餓漢式:執行緒安全:構造方法私有化:推薦使用
public class Singleton{
private static Singleton singleton = new Singleton ();//類建立時,就建立一個靜態物件,之後不會再改變
private Singleton (){}
public Singleton getInstance(){return singletion;}
}
懶漢式:執行緒不安全:若生成例項的時候若不加synchronized(執行緒同步),會發生執行緒不安全:如:當一個執行緒執 行到(2)時,還未生成物件,另一個執行緒執行(1);這時就會發生執行緒不安全
public class Singleton{
private static Singleton singleton = null;
public static synchronized getInstance(){
if(singleton==null){//(1)
//(2)
singleton = new Singleton();//(3)
}
return singleton;
}
}