質問: new Hoge(); /** * コンストラクタ。 */ private Hoge() { } /** * このクラスの唯一のインスタンスを返す。 */ public static Hoge getInstance() { return instance; } }
回答: ``` private Hoge() { ``` としているので、「同時にnew Hoge()を生成され」る場合はありえないと思うのですが、 おそらく、 ``` Hoge myHoge = Hoge.getInstance(); ``` を複数のスレッドで同時に読んだ場合だと解釈してお答えしますと、 ``` /* 唯一のインスタンス。 */ private static final Hoge instance = new Hoge(); ``` に限らず、staticフィールドの初期化はすべてのスレッドの実行前に行われていると思います。