class Foo { private static initialized = false; private static instance = null; public static void getInstance() { if (!initialized) { synchronize(foo.class) { initialize(); } initialized = true; } return instance; } }
这是一个单例初始化的经典错误,必须在initialize之前判断initialized的状态,否则会初始化多次。