【发布时间】:2021-01-20 22:53:30
【问题描述】:
我正在尝试使用Bloch's effective java recommendation 修复双重检查锁定。但是我的代码中的一个小变化是字段类型是静态的,而创建字段类型的方法是实例方法。 以下用于创建静态字段的变体是否有效?
private static volatile FieldType field4;
// NOTE: The code for this method in the first printing had a serious error (see errata for details)!
public FieldType getField4() {
FieldType result = field4;
if (result != null) // First check (no locking)
return result;
synchronized(Initialization.class) {
if (field4 == null) // Second check (with locking)
field4 = computeFieldValue();
return field4;
}
}
我无法将方法设为静态方法 // 静态字段的延迟初始化持有者类惯用语 - 第 334 页。
【问题讨论】:
标签: java thread-safety static-analysis double-checked-locking