初始化非最终字段
我目前正在阅读JSR-133(Java内存模型),我不明白为什么f.y可能未初始化(可以看到0)。有人可以向我解释一下吗?
class FinalFieldExample {
final int x;
int y;
static FinalFieldExample f;
public FinalFieldExample() {
x = 3;
y = 4;
}
static void writer() {
f = new FinalFieldExample();
}
static void reader() {
if (f != null) {
int i = f.x; // guaranteed to see 3
int j = f.y; // could see 0
}
}
}