鉴于string
s 包含 final 字段,这是否意味着在双重检查锁定的上下文中不需要声明它们volatile
?例如
class SomeClass{
private String val;
String getVal(){
if(val == null){
synchronized(this){
if(val ==null)
val = new String("foo");
}
}
}
}
我以字符串为例,但它应该与声明一些最终字段的其他对象一起使用,对吗?