class Singleton ...{ private static Singleton instance; private Singleton() ...{} public static Singleton getInstance() ...{ if (instance == null) ...{ // 判断1 synchronized(instance) ...{ //加锁 if (instance == null) ...{ //判断2 instance = new Singleton(); } } } return instance; }} 只有当第一次判断到为null的时候,才对对象加锁检查,这样是为了性能考虑。加锁是为了解决同步的问题。