首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android中的双重检查锁定

Android中的双重检查锁定
EN

Stack Overflow用户
提问于 2011-04-19 21:26:46
回答 2查看 2.3K关注 0票数 19

根据许多人的说法,java中比较常见的双重检查锁定习惯用法已经被打破,除非您运行的是1.5或更高版本并使用volatile关键字。

一个损坏的双重检查锁样本:

代码语言:javascript
复制
// Broken multithreaded version
// "Double-Checked Locking" idiom
class Foo { 
  private Helper helper = null;
  public Helper getHelper() {
    if (helper == null) 
      synchronized(this) {
        if (helper == null) 
          helper = new Helper();
      }    
    return helper;
    }
  // other functions and members...
  }

示例来自本文,其中还提供了有关如何修复它的详细信息:http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

Pugh上面的分析是针对Java VM的。我在Android上工作,经常使用采用双重检查锁定的库。dalvik VM的内存模型支持这个习惯用法吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5717090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档