>>378
オブジェクト生成完了時のフィールドの可視性を保証するならば、
たとえ終始シングルスレッドでオブジェクトの生成・アクセスすることを考えていても
(VMが他スレッドに漏れてないと判断するまで)他スレッドへの可視性を保証するために、
インライン展開などの最適化は妨げられ、また同期のオーバヘッドが掛かるはず。
ありとあらゆるオブジェクトの生成に関して。

そもそも、finalフィールドでなければ、
アクセスした次の瞬間に別の値になっていることを想定しなければならないし、
同期を正しく行わずにオブジェクトにアクセスしたりすれば、
正しい値が見えないどころかオブジェクトの整合性を壊す可能性もあるかもしれないことは、
オブジェクトの生成時に限らない。オブジェクトの生成を特別視し、
その完了時にフィールドの可視性を保証することにどれだけの意味があるだろうか?

だいたい、一貫した同期を使わない double checked locking って気持ち悪くね?
ジャバラーだからわからんが、そもそも、Cとかの他言語でも、
それぞれのプロセッサは必要がなければ内部情報を交換しない方が速いんじゃね?