当前位置: 代码迷 >> J2SE >> 大伙儿来看看这个线程安全的Singleton单例?
  详细解决方案

大伙儿来看看这个线程安全的Singleton单例?

热度:7335   发布时间:2013-02-25 00:00:00.0
大家来看看这个线程安全的Singleton单例???
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的,只是创建时间不一样而已
为何说第一种比第二种安全?

忘高手详细解释,指点一下

------解决方案--------------------------------------------------------
探讨
我看到解释如下:第一种方式虽然没有使用同步,但确保了调用static getInstance()方法时才创建Singleton的引用(static 的成员变量在一个类中只有一份)。
---------------------------
我不理解的是,为何说是“调用static getInstance()方法时才创建Singleton的引用”
不是一开始申明static变量的时候就创建了吗private static Singleton instance = new Singleton();
按我的理解两种方式申明instance不是一样的么,都是private static的,只是创建时间不一样而已
为何说第一种比第二种安全?

忘高手详细解释,指点一下
  相关解决方案