考虑这个例子:
class SomeClass{
private Foo val;
String getVal(){
if(val == null){
synchronized(this){
if(val ==null)
val = generateFoo();
}
}
}
Foo generateFoo(){
//some code
return new Foo();
}
}
在这种情况下 volatile 是必要的吗?