Am 08.10.2009 12:59, David Holmes - Sun Microsystems schrieb:
Hi Ulf,
It's a memory model issue. The code is like this:
public String getName() {
if (name == null)
name = getName0();
return name;
}
but in theory, accoridng to the JMM experts, it could act as if it
does this:
public String getName() {
String tmp1 = name; // sees null
String tmp2 = name; // sees non-null
if (tmp2 == null)
tmp1 = name = getName0();
return tmp1;
}
imagine the temporaries are registers.
Oops, java programming is not simple as it looks like. Can you give me a
link, where I can read more about that subject / JMM?
David, thanks for your explicit explanation.
-Ulf