关于单例模式线程安全问题

原文链接:http://www.iteye.com/problems/14912


整理后如下:


问题:

首先,为什么要同步,不同步出现错误的时机是什么? 

还有,单例模式有懒汉式和非懒汉式,如果是懒汉式是否需要加同步锁,非懒汉式呢?


答案:

不同步的话, 对于懒汉式的, 就是在, 这个类的实例还没有创建的时候, 2个线程同时去调用getInstance, 这时, 由于没有同步锁, 有可能会创建出2个实例来。 
对于饿汉式, 由于实例是在load class的时候创建的, 所以就没有这个问题。 当然, 就是2个线程采用了不同的class loader. 
当然, 无论饿汉还是懒汉, 几率都不高, 但几率低不代表不会出错, 逻辑上也不对, 因此, 编程者还是应该避免

你可能感兴趣的:(Java,线程)