您的位置:首页 > 编程语言

多线程安全的单例代码中,为何要两次判断是否为null

2008-07-16 09:15 519 查看
private static synchronized void syncInit() {
if (instance == null) {
instance = new GlobalConfig();
}
}
public static GlobalConfig getInstance() {
if (instance==null) {
syncInit();
}
return instance;
}

防止2个线程同时发现instance==null,然后同时调用了syncInit()的同步方法。

这样做,第二个进入syncInit的线程将发现那个对象已经不再是null了
避免被二次初始化。

这是单例模式的多线程必须注意的问题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: