>>144
Reflectionは全く関係ない。

移植性のあるコードで(*)と(**)が必要となる理由は、
有名な"Double-Checked Locking is Broken"での話と同じ。
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
を一通り読んだ後、
http://java.sun.com/docs/books/jls/second_edition/html/memory.doc.html#28325
辺りとにらめっこしながらコードを読めば、問題点がわかるだろう。

また、pentiumなどで(*)と(**)が不要となる理由は、
"Cache Coherency"とかのキーワードで検索してみるとよろし。