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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java单例模式优化写法

發布時間:2024/2/28 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java单例模式优化写法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?http://blog.csdn.net/diweikang/article/details/51354982

Java單例模式優化寫法

方法一:推薦

[java]?view plain?copy
  • public?class?SingletonClass?{??
  • ??????
  • ??private?static?class?SingletonClassInstance?{??
  • ????private?static?final?SingletonClass?instance?=?new?SingletonClass();??
  • ??}??
  • ??
  • ??public?static?SingletonClass?getInstance()?{??
  • ????return?SingletonClassInstance.instance;??
  • ??}??
  • ??
  • ??private?SingletonClass()?{??
  • ??
  • ??}??
  • ??????
  • }??
  • 實際情況是,單例模式使用內部類來維護單例的實現,JVM內部的機制能夠保證當一個類被加載的時候,這個類的加載過程是線程互斥的。這樣當我們第一次調用getInstance的時候,JVM能夠幫我們保證instance只被創建一次,并且會保證把賦值給instance的內存初始化完畢。同時該方法也只會在第一次調用的時候使用互斥機制,這樣就解決了低性能問題

    在這一版本的單例模式實現代碼中,我們使用了Java的靜態內部類。這一技術是被JVM明確說明了的,因此不存在任何二義性。在這段代碼中,因為SingletonClass沒有static的屬性,因此并不會被初始化。直到調用getInstance()的時候,會首先加載SingletonClassInstance類,這個類有一個static的SingletonClass實例,因此需要調用SingletonClass的構造方法,然后getInstance()將把這個內部類的instance返回給使用者。由于這個instance是static的,因此并不會構造多次。

    由于SingletonClassInstance是私有靜態內部類,所以不會被其他類知道,同樣,static語義也要求不會有多個實例存在。并且,JSL規范定義,類的構造必須是原子性的,非并發的,因此不需要加同步塊。同樣,由于這個構造是并發的,所以getInstance()也并不需要加同步。


    方法二:

    [java]?view plain?copy
  • public?class?SingletonTest?{????
  • ??
  • ????private?static?SingletonTest?instance?=?null;????
  • ????
  • ????private?SingletonTest()?{????
  • ????}????
  • ????
  • ????private?static?synchronized?void?syncInit()?{????
  • ????????if?(instance?==?null)?{????
  • ????????????instance?=?new?SingletonTest();????
  • ????????}????
  • ????}????
  • ????
  • ????public?static?SingletonTest?getInstance()?{????
  • ????????if?(instance?==?null)?{????
  • ????????????syncInit();????
  • ????????}????
  • ????????return?instance;????
  • ????}????
  • }??
  • 方法三: [java]?view plain?copy
  • public?class?SingletonClass?{??
  • ??
  • ??private?static?SingletonClass?instance?=?null;??
  • ??
  • ??public?static?SingletonClass?getInstance()?{??
  • ????if?(instance?==?null)?{??
  • ??????synchronized?(SingletonClass.class)?{??
  • ????????if?(instance?==?null)?{??
  • ??????????instance?=?new?SingletonClass();??
  • ????????}??
  • ??????}??
  • ????}??
  • ????return?instance;??
  • ??}??
  • ??
  • ??private?SingletonClass()?{??
  • ??
  • ??}??
  • ??
  • }??

  • 參考:http://devbean.blog.51cto.com/448512/203501/

    ??????????? http://blog.csdn.net/longyulu/article/details/9159589


    總結

    以上是生活随笔為你收集整理的Java单例模式优化写法的全部內容,希望文章能夠幫你解決所遇到的問題。

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