让有一个类定义,如
public static class Bootstrapper {
public static final Object DEFAULT_VALUE = getDefaultValue();
private static Object getDefaultValue() {
if (DEFAULT_VALUE == null) {
return createValue(); // Not thread safe
}
return DEFAULT_VALUE;
}
}
该createValue()
方法不引用该DEFAULT_VALUE
字段,仅在Bootstrapper
类的构造函数中以其他方式调用,并且不是线程安全的。
上面的代码有什么问题(除了编程风格)吗?考虑到类初始化的规则,大概线程安全不是问题,但是程序员需要注意什么重要的事情?