在工作中的 Sonar 报告中,我们对 Android 项目有一些警告:
多线程正确性 - 静态字段 findbugs 的不正确延迟初始化:LI_LAZY_INIT_STATIC
为了纠正这些问题,我被引导到关于双重检查锁定的维基百科条目
http://en.wikipedia.org/wiki/Double_checked_locking_pattern#Usage_in_Java
当我查看 android 框架代码时,我没有看到使用双重检查锁定,例如,WebViewDatabase 类只是使其 getInstance(Context) 方法同步:
public static synchronized WebViewDatabase getInstance(Context context) {
if (mInstance == null) {
mInstance = new WebViewDatabase(context);
}
return mInstance;
}
Android中的正确方法是什么?
提前致谢