2016-06-17 4 views
-1

通常、スレッドを開始するには、Threadクラスを拡張するか、Runnableインターフェイスを実装してrun()メソッドをオーバーライドします。しかし、以下のコードでは、上記のことはしていませんし、実際にはスレッドを作成するために匿名クラスを使用しています。 Javaでスレッドを開始するのは本当に良い/法的/推奨の方法ですか?匿名クラスを使用してスレッドを開始することは合法ですか?

Thread thread = new Thread(new Runnable() { 

    @Override 
    public void run() { 

    } 

}); 

thread.start(); 

答えて

2

Javaでスレッドを開始するのは本当に良い方法ですか?

良いですか? - あなたの要求があなたの要求に依存しているかどうか、一種の重い機能を一種の火の中で実行し、それから方法を忘れるならば、それはうまくいくかもしれません。

法的? - これは合法です - このコードはコンパイルされ、正常に実行されます

お勧めですか? - これはおそらく意見に基づくと思われますが、ExecutorsFutureFutureTask

を一緒に使用することをおすすめします
-1

各スレッドのrunメソッドをコピー/ペーストする必要があるため、実行するのは悪い方法です。

すべてのコードを1つのファイルに入れるのではなく、メソッド/クラスを使用するのと同じ理由があります。

1

私は予測可能な動作を持っていると私はスレッド内で完了を保証することができますスレッドを持っている場合は、匿名のスレッド

  • を使用する方法を学ぶこの

    1. にしてください理由は2つあります。

    そうでない場合は、この構造を避けてください。

  • -1

    buddyそれはあなたの要件に完全に依存しているので、外部クラスのプライベート変数にアクセスする必要があるユースケースがあるかもしれないので、内部の匿名クラスを使用しました。また、新しいスレッドの生成については、ネットワークコールでは、スレッドプールを設計し、ネットワーク要求の数に関係なくスレッドの数を制限して使用する必要があります。

    関連する問題