【Java】一个经典的多线程错误

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的状态,否则会初始化多次。

posted @ 2017-07-06 10:21  syb3181  阅读(166)  评论(1编辑  收藏  举报