日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单例模式之懒汉式/饿汉式/结合二者之优的模式

發布時間:2024/1/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单例模式之懒汉式/饿汉式/结合二者之优的模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單例模式主要用來產生一個對象的具體實例,它可以確保系統中一個類只產生一個實例。

兩個好處:

  • 對于頻繁使用的對象,可以省略new操作花費的時間
  • new的次數少了,對系統內存的使用頻率就小了,那么GC壓力就會降低,縮短了GC停頓時間

餓漢式單例模式:

public class Singleton {private Singleton() {System.out.println("Singleton iscreate");}private static Singleton instance = new Singleton();private static Singleton getInstance() {return instance;} }

私有化構造方法的作用:不能new這個類的實例,從而避免該類被錯誤的創建

因此要想獲取這個對象,只能調用getInstance()工廠方法,構造方法被私有化,要想這個方法可以被調用,所以這個方法必須用static修飾,調用方式:類.方法名

從而instance也必須用static修飾。

好處:性能非常好,getInstance()方法只是簡單的返回instance,并沒有任何鎖操作,所以在并行程序中它會有很好的表現

壞處:Singleton構造函數或者說Singleton實例在什么時候創建是不受控制的,對于靜態成員instance,它會在類第一次初始化的時候被創建,并不是第一次調用getInstance()方法的時候被創建的

延伸一點:static修飾的成員變量所屬類被加載的時候,變量間會被分配空間,及就會被創建

懶漢式單例模式:

public class LazySingleton {private LazySingleton() {System.out.println("LazySingleton is create");}private static LazySingleton instance = null;private static synchronized LazySingleton getInstance() {if (instance == null)instance = new LazySingleton();return instance;} }

私有化構造方法的作用:不能new這個類的實例,從而避免該類被錯誤的創建

只有當調用getInstance()方法時才會創建單例對象,為了防止對象被多次創建,還須要使用synchronized進行方法同步

好處:充分利用了延遲加載,只有在真正需要時才會創建對象

壞處:并發環境下加鎖,競爭激烈的場合對性能會產生一定影響

另外還有一種,雙重判斷加雙同步(安全又高效):

public class SingleTon {private static volatile SingleTon singleTon = null;private SingleTon() {}public static SingleTon getInstance() {if (singleTon == null) {synchronized (SingleTon.class) {if (singleTon == null) {singleTon = new SingleTon();}}}return singleTon;} } 為什么雙重判斷: 如果單層if判斷,在服務器允許的情況下,假設有一百個線程,耗費的時間為100*(同步判斷時間+if判斷時間),而如果雙重if判斷,100的線程可以同時if判斷,理論消耗的時間只有一個if判斷的時間。 所以如果面對高并發的情況,而且采用的是懶漢模式,最好的選擇就是雙重判斷加同步的方式。

轉載于:https://www.cnblogs.com/java-spring/p/9075670.html

總結

以上是生活随笔為你收集整理的单例模式之懒汉式/饿汉式/结合二者之优的模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。