多线程安全的单例代码中,为何要两次判断是否为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了
避免被二次初始化。
这是单例模式的多线程必须注意的问题!
if (instance == null) {
instance = new GlobalConfig();
}
}
public static GlobalConfig getInstance() {
if (instance==null) {
syncInit();
}
return instance;
}
防止2个线程同时发现instance==null,然后同时调用了syncInit()的同步方法。
这样做,第二个进入syncInit的线程将发现那个对象已经不再是null了
避免被二次初始化。
这是单例模式的多线程必须注意的问题!
相关文章推荐
- 判断一个对象是否为null的代码:if(null != 对象名),这样写法的好处.
- 为何在做数组安全验证时,既要验证是否为null,又要验证长度是否为0
- java---教你怎么判断多线程是否安全
- Discuz!X 插件开发判断用户是否登录的代码怎么写
- [JS代码]如何判断ipad或者iphone是否为横屏或者竖屏 - portrait或者landscape
- C语言判断字符串是否以str2开头代码
- 判断对象是否Window的实现代码
- asp 判断是否为搜索引擎蜘蛛的代码
- MySQL数据库判断字段是否为NULL的误区
- android 开发中判断网络是否连接的代码
- 简单代码,实现快速判断几个EDIT是否允许为空
- jQuery判断元素是否是隐藏的代码
- 严重不安全:STL map 使用map[key]==0判断key是否存在于map中
- C#判断数据库中取出的字段值是否为空(NULL)
- 20140624:(是否存在某个文件夹操作)PE下粗略判断某个分区是否是Windows系统盘的代码
- 分享一段php代码,用于判断内容是否经过urlencode()编码
- Android判断当前网络是否可用--示例代码
- 【Java并发编程】之八:多线程环境中安全使用集合API(含代码)(r)
- AJAX判断用户是否存在,并且判断两次密码输入是否一致
- javascript/jquery判断是否为undefined或是null!