關於多例模式-from單例模式

airport發表於2004-03-23
第二種形式:

public class Singleton {
  private static Singleton instance = null;

  public static synchronized Singleton getInstance() {

  //這個方法比上面有所改進,不用每次都進行生成物件,只是第一次     
  //使用時生成例項,提高了效率!
  if (instance==null)
    instance=new Singleton();
  return instance;   }

}




使用Singleton.getInstance()可以訪問單態類。

上面第二中形式是lazy initialization,也就是說第一次呼叫時初始Singleton,以後就不用再生成了。

注意到lazy initialization形式中的synchronized,這個synchronized很重要,如果沒有synchronized,那麼使用getInstance()是有可能得到多個Singleton例項。關於lazy initialization的Singleton有很多涉及double-checked locking (DCL)的討論,有興趣者進一步研究。

------------
以上引用jdon.com
請問如何寫一個測試例子,能夠證明可以生成多例模式,我現在某種情況下需要多例!也就是大多數情況需要利用單例模式呼叫資源,但是如果資源被佔用的時候,需要從新生成一個物件,去掉synchronized可以?能不能給個測試的例子!

相關文章