原文链接:http://www.iteye.com/problems/14912
整理后如下:
问题:
首先,为什么要同步,不同步出现错误的时机是什么?
还有,单例模式有懒汉式和非懒汉式,如果是懒汉式是否需要加同步锁,非懒汉式呢?
答案:
不同步的话, 对于懒汉式的, 就是在, 这个类的实例还没有创建的时候, 2个线程同时去调用getInstance, 这时, 由于没有同步锁, 有可能会创建出2个实例来。
对于饿汉式, 由于实例是在load class的时候创建的, 所以就没有这个问题。 当然, 就是2个线程采用了不同的class loader.
当然, 无论饿汉还是懒汉, 几率都不高, 但几率低不代表不会出错, 逻辑上也不对, 因此, 编程者还是应该避免