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