單例模式 之 單例模式——餓漢模式


餓漢模式特點:見名知意,“他”很餓,迫切需要找到吃的... 所以 餓漢模式需要 第一時間 “找到吃的”(構建對象)。

如下代碼:

 1 /**
 2  * 餓漢模式
 3  */
 4 public class HungrySingleton {
 5     private static  HungrySingleton instance=new HungrySingleton();
 6 
 7     /**
 8      * 禁止外部構建
 9      */
10     private HungrySingleton(){}
11 
12     /**
13      * 由外部調用
14      * @return
15      */
16     public static HungrySingleton getInstance(){
17         return instance;
18     }
19 
20     /**
21      * 測試
22      * @param args
23      */
24     public static void main(String[] args) {
25         for(int i=0;i<20;i++){
26             new Thread(()->{
27                 System.out.println(HungrySingleton.getInstance());
28             }).start();
29         }
30     }
31 
32 }

測試結果:運行二十線程,運行的結果為同一個用例。

 2 com.company.HungrySingleton@19281561
 3 com.company.HungrySingleton@19281561
 4 com.company.HungrySingleton@19281561
 5 com.company.HungrySingleton@19281561
 6 com.company.HungrySingleton@19281561
 7 com.company.HungrySingleton@19281561
 8 com.company.HungrySingleton@19281561
 9 com.company.HungrySingleton@19281561
10 com.company.HungrySingleton@19281561
11 com.company.HungrySingleton@19281561
12 com.company.HungrySingleton@19281561
13 com.company.HungrySingleton@19281561
14 com.company.HungrySingleton@19281561
15 com.company.HungrySingleton@19281561
16 com.company.HungrySingleton@19281561
17 com.company.HungrySingleton@19281561
18 com.company.HungrySingleton@19281561
19 com.company.HungrySingleton@19281561
20 com.company.HungrySingleton@19281561
21 com.company.HungrySingleton@19281561
22 
23 Process finished with exit code 0

安全性:在類加載時會將進行加載,等到調用時該類已經被處理好了所以能保證多線程調用下,調用的是同一個實例。

懶加載:如上所說,在類加載時就已經加載出來,所以不存在懶加載。

性能:性能不是很好,若長期不使用會占用內存空間,內存空間不足時容易造成內存溢出異常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM