具有内部类的Java Singleton - 什么保证了线程安全?
实现单例的一种常见 (1,2) 方法使用具有静态成员的内部类:
public class Singleton  {    
    private static class SingletonHolder {    
        public static final Singleton instance = new Singleton();
    }    
    public static Singleton getInstance() {    
        return SingletonHolder.instance;    
    }
    private Singleton() {
        //...
    }
}
据说这个实现是懒惰初始化和线程安全的。但究竟是什么保证了它的螺纹安全呢?处理线程和锁的 JLS 17 没有提到静态字段具有任何发生在之前的关系。我如何确定初始化只会发生一次,并且所有线程都看到相同的实例?
 
					 
				 
				    		 
				    		 
				    		 
				    		