最终推荐写法
public class Singleton{ private static class SingletonHolder{ public static Singleton instance = new Singleton(); } private Singleton(){} //访问静态内部类的静态字段 从而触发类的加载 public static Singleton newInstance(){ return SingletonHolder.instance; } }
因为同一个类只加载一次,类加载过程由类加载器负责加载,从而保证线程安全。相对于双重检测锁,更加简洁。