Java單例模式
第一種:
定義私有構(gòu)造函數(shù):
定義私有對象:
Single1();
定義公共靜態(tài)方法:
外界只需調(diào)用靜態(tài)方法,即可獲得該對象:
Single1.create();
第一種特點:調(diào)用塊,不調(diào)用也有空間保存對象
-------------------------------------------
第二種:(推薦)
同上,定義私有構(gòu)造函數(shù):
定義私有對象,不要 new 出對象!
寫公共靜態(tài)方法:
create(){
//這里還需上鎖,因為第一個人進(jìn)來后,開始等待new對象
== null)
instance = new Single2();
instance;
解釋:synchronized關(guān)鍵字,代表這個方法加鎖,相當(dāng)于不管哪一個線程A每次運(yùn)行到這個方法時,都要檢查有沒有其它正在用這個方法的線程B(或者C
D等),有的話要等正在使用這個方法的線程B(或者C D)運(yùn)行完這個方法后再運(yùn)行此線程A,沒有的話,直接運(yùn)行它包括兩種用法:synchronized 方法和
synchronized 塊。
防止多人訪問卡死
第二種特點:不在內(nèi)存中保存對象,第一次創(chuàng)建對象慢