一般Singleton模式通常有幾種形式:
第一種形式:
都說第二種形式是lazy initialization,也就是說第一次調用時初始Singleton,不用每次都進行生成對象實例,提高了效率。
我的疑問是:第一種形式每次通過Singleton.getInstance()就會多次生成實例嗎?instance 不是static的嗎,也只初始化一次啊!
還有第二種形式中的synchronized 為什么是必須的?不明白,望指點!
第一種形式:
public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance() { |
第二種形式:
public class Singleton { private static Singleton instance = null; } |
還有第二種形式中的synchronized 為什么是必須的?不明白,望指點!