亚洲天堂一级片-亚洲天堂三区-亚洲天堂久久精品成人-亚洲天堂毛片-久久国产欧美日韩高清专区-久久国产欧美日韩精品免费

北京北大青鳥學校學員總結:java單例設計模式(二)

大家好,我是北京北大青鳥學校軟件工程師培訓課程的一名學員。上一篇文章中,我根據(jù)自己的理解,總結了java單例設計模式的幾種方式。這篇文章,我將繼續(xù)總結,并希望大家和北京北大青鳥學校的老師給予建議和指導。

第六種(枚舉):

Java代碼
public enum Singleton { 
    INSTANCE; 
    public void whateverMethod() { 
    } 

這種方式不僅能避免多線程同步問題,而且還能防止反序列化重新創(chuàng)建新的對。不過,個人認為由于1.5中才加入enum特性,用這種方式寫不免讓人感覺生疏,在實際工作中,我也很少看見有人這么寫過。(北京北大青鳥學校,北大青鳥課程)


第七種(雙重校驗鎖):

Java代碼
public class Singleton { 
    private volatile static Singleton singleton; 
 
    public static Singleton getSingleton() { 
    if (singleton == null) { 
        synchronized (Singleton.class) { 
        if (singleton == null) { 
            singleton = new Singleton(); 
        } 
        } 
    } 
    return singleton; 
    } 
}  (北京北大青鳥學校,北大青鳥課程

 這個是第二種方式的升級版,俗稱雙重檢查鎖定。在JDK1.5之后,雙重檢查鎖定才能夠正常達到單例效果。

總結

有兩個問題需要注意:

1.如果單例由不同的類裝載器裝入,那便有可能存在多個單例類的實例。假定不是遠端存取,例如一些servlet容器對每個servlet使用完全不同的類裝載器,這樣的話如果有兩個servlet訪問一個單例類,它們就都會有各自的實例。

2.如果Singleton實現(xiàn)了java.io.Serializable接口,那么這個類的實例就可能被序列化和復原。不管怎樣,如果你序列化一個單例類的對象,接下來復原多個那個對象,那你就會有多個單例類的實例。(北京北大青鳥學校,北大青鳥課程)

對第一個問題修復的辦法是:

Java代碼
private static Class getClass(String classname)     
                                         throws ClassNotFoundException {    
      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();    
     
      if(classLoader == null)    
         classLoader = Singleton.class.getClassLoader();    
     
      return (classLoader.loadClass(classname));    
   }    

對第二個問題修復的辦法是:

Java代碼
public class Singleton implements java.io.Serializable {    
   public static Singleton INSTANCE = new Singleton();    
     
   protected Singleton() {    
       
   }    
   private Object readResolve() {    
            return INSTANCE;    
      }   
}   (北京北大青鳥學校,北大青鳥課程
 
我個人比較喜歡第三種和第五種方式,簡單易懂,而且在JVM層實現(xiàn)了線程安全(如果不是多個類加載器環(huán)境),一般的情況下,我會使用第三種方式,只有在要明確實現(xiàn)lazy loading效果時才會使用第五種方式,另外,如果涉及到反序列化創(chuàng)建對象時我會試著使用枚舉的方式來實現(xiàn)單例,不過,我一直會保證我的程序是線程安全的,而且我永遠不會使用第一種和第二種方式,如果有其他特殊的需求,我可能會使用第七種方式,畢竟,JDK1.5已經(jīng)沒有雙重檢查鎖定的問題了。以上是我的總結,希望北京北大青鳥學校老師幫助提些建議。

北京北大青鳥學校學術老師評價:這位學員總結的很到位,很不錯。不過一般來說,第一種不算單例,第四種和第三種就是一種,如果算的話,第五種也可以分開寫了。所以說,一般單例都是五種寫法。

北京北大青鳥學校學術老師鼓勵今后有更多的北京北大青鳥學校學員能與老師一起交流,這樣才能提高學員的技術能力。想要了解北大青鳥好嗎?北大青鳥怎么樣?北大青鳥課程?北大青鳥學費多少等問題,歡迎您與通州北大青鳥網(wǎng)站在線老師聯(lián)系

北大青鳥網(wǎng)上報名
北大青鳥招生簡章
主站蜘蛛池模板: 免费成人高清 | 成人国产精品999视频 | 国产精品久久久久国产精品 | 中国二级毛片 | 亚洲精品一区二区三区美女 | 亚洲一级毛片中文字幕 | 新版天堂资源中文8在线 | 亚洲在线精品视频 | 久热久操 | www.色午夜 | 国产成人aaa在线视频免费观看 | 九九香蕉网 | 亚洲欧美影院 | 日本aaaaa级毛片 | 欧美成人aaa大片 | 一区二区在线看 | 亚洲美女自拍视频 | 欧美成人免费tv在线播放 | 国内精品久久影视 | 欧美13一14周岁a在线播放 | 国产成人一区二区三区免费观看 | 欧美日韩在线观看免费 | 午夜久久网 | 久久www免费人成看国产片 | 99久久免费国产精品 | 黄页网址免费观看18网站 | 久久精品一区二区免费看 | 亚洲美女aⅴ久久久91 | 免费亚洲网站 | 日韩在线观看一区二区三区 | 美女啪啪网站又黄又免费 | 成人亚洲精品 | v片视频 | 久久久久久久99久久久毒国产 | 国产精品99久久免费观看 | 亚洲国产字幕 | 欧美日韩一区二区在线观看视频 | 亚洲精品www久久久久久久软件 | 国产免费亚洲 | www国产| 日韩美三级|