在Android中再次检查了锁定。
|
许多人认为,除非您运行1.5或更高版本并使用
volatile
关键字,否则Java有时会出现一些常见的Double-Checked Locking惯用语。
双重检查的锁样本损坏:
// 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上工作,并且经常使用采用Double-Checked Locking的库。 dalvik VM的内存模型是否支持该惯用法?
没有找到相关结果
已邀请:
2 个回复
糖固傻染
肺鬼耙扮群