Jedynym problemem w tym kodzie, że widzę to, że „cachedConstructor” pole jest niestabilna, a jednocześnie gwarantuje wartość efekt widoczności wśród wątków, ten konkretny blok kodu ma dziwactwo, że różne wątki widział cachedConstructor jako NULL przed wartością zostanie przypisany przez jeden z wątków, tzn. sekwencja inicjalizacyjna nie jest atomowa. Może to tylko doprowadzić do tego, że buforowana Konstruktor może być przypisana kilka razy jednocześnie, ale nie złamie kodu, jeśli nikt konkretnie nie powie, że będzie to ta sama instancja klasy Constructor. Jeśli bufor inicjalizujący bufor byłby zsynchronizowany, to będzie on atomowy, tzn. Buforowana Konstruktor zostanie przypisana tylko raz, niezależnie od warunków wyścigu.
Powiedziawszy, kod powinien działać poprawnie, ale pozwala na równoczesne nadmierne przeliczanie wartości z pamięci podręcznej przez więcej niż jeden wątek.
Czy mógłbyś przytoczyć odpowiedni "poniższy kod"? – Vlad
Znalazłem notatkę (dzięki Google) http://cr.openjdk.java.net/~jrose/7030453/webrev.00/raw_files/new/src/share/classes/java/lang/Class.java – Augusto
rodzaj DCL? http://www.javaworld.com/jw-02-2001/jw-0209-double.html – Flot2011