- Java code
1./* 安全的方式 */ 2.public class Singleton { 3. 4. private static Singleton instance = new Singleton(); 5. 6. private Singleton() {} 7. 8. public static Singleton getInstance() { 9. return instance; 10. } 11. 12.} /*非线程安全的方式*/1.public class Singleton { 2. 3. private Singleton() {} 4. private static Singleton instance = null; 5. 6. public static Singleton getInstance() { 7. if(instance == null) { 8. instance = new Singleton(); 9. } 10. return instance; 11. } 12.}
我看到解释如下:第一种方式虽然没有使用同步,但确保了调用static getInstance()方法时才创建Singleton的引用(static 的成员变量在一个类中只有一份)。
---------------------------
我不理解的是,为何说是“调用static getInstance()方法时才创建Singleton的引用”
不是一开始申明static变量的时候就创建了吗private static Singleton instance = new Singleton();
按我的理解两种方式申明instance不是一样的么,都是private static的,只是创建时间不一样而已
为何说第一种比第二种安全?
忘高手详细解释,指点一下
------解决方案--------------------------------------------------------