安全な建設技術に関する Brian Goetz の記事では、次のように読むことができます。
[...] 多くの場合、オブジェクトがスレッドを所有している場合、そのスレッドが内部クラスであるか、 this 参照をそのコンストラクターに渡します(またはクラス自体が Thread クラスを拡張します)。オブジェクトがスレッドを所有する場合、Thread と同様にオブジェクトが start() メソッドを提供し、コンストラクターからではなく start() メソッドからスレッドを開始するのが最善です。これにより、インターフェイスを介してクラスの実装の詳細 (所有スレッドが存在する可能性など) が明らかになりますが、これは多くの場合望ましくありません。
以下のコードで問題ないと思います。内部クラスでもないので、 の参照を渡していますthis
。しかし、私は確信したい。
private Controller controller;
private View view;
public Facade() {
view = new View();
controller = new Controller(view);
controller.start();
}
しかし、NetBeans の警告が何度も表示されます... では、このコードは安全ですか、それとも安全ではないのでしょうか?