Bloqueio duplo verificado em Java - Strings
Dado questring
s contêm o campo final, isso significa que, no contexto de bloqueio duplo verificado, não é necessário declará-losvolatile
? Por exemplo.
class SomeClass{
private String val;
String getVal(){
if(val == null){
synchronized(this){
if(val ==null)
val = new String("foo");
}
}
}
}
Usei uma string como exemplo, mas ela deve funcionar com outros objetos que declaram algum campo final, correto?