複数のスレッドを1つのインスタンスで作成することと、スレッドごとに別々のインスタンスを作成することの違いは何ですか?最初のアプローチはいつ使うべきですか?私は例を挙げて、2つの概念をより明確に理解することができますか?似たような話題はほとんど見つかりませんでしたが、私は2つのアプローチの両方のコントラストを完全に理解することができませんでした。Runnable VSの単一インスタンスで複数のスレッドを作成する。スレッドごとに別のインスタンスがある
1
A
答えて
1
違いは何ですか...?
差--- 全体差が--- Runnable
クラスは、1つまたは複数のフィールドを有する場合、スレッドの全てが与えられた場合、これらのフィールドは、複数のスレッドで共有されることです同じインスタンスであり、各スレッドに独自のインスタンスが与えられている場合は共有されません。
Runnable
クラスでフィールドが宣言されていない場合、実質的に違いはありません。
基本的には、プログラム内のどのデータをスレッド間で共有し、どのデータを共有しないかを決めるのはあなた次第です。
Runnable
すべてのフィールドが共有されている場合は(あなたがすべてのスレッドで同じRunnable
インスタンスを使用している場合、すなわち、)、、それは難しいあなたがが共有されていない任意のデータを持っているために作るということ。
1
各スレッドがまったく同じ場合は、複数のスレッドにわたって同じRunnableを使用できます。これはほとんど役に立ちません。あなたはスレッドプール内のスレッドをこのように動作させることができますが、この場合、私は組み込みのスレッドプールを使用し、独自のものは作成しません。
異なるスレッドを別の状態にする必要がある場合は、Runnableが状態を保持しているため、スレッドごとに異なるRunnableが必要になります。これは、コードが同じであっても、異なるデータを処理する必要のあるスレッドがある場合に便利です。
関連する問題
- 1. スレッドを作成するクラスのインスタンスを複数インスタンス化する...?
- 2. カフカストリーム - 複数の単一インスタンスに参加し、スレッドの数
- 3. Runnableの同じインスタンスを渡して2つのスレッドを作成する
- 4. Bigtableで単一インスタンスと複数のインスタンスを比較する
- 5. VMはそのスレッドにスレッドごとに複数のインスタンスを必要としますか?
- 6. 複数リクエストのジャージクライアントの単一インスタンスの作成方法
- 7. Cassandra:単一のラージ・インスタンスと複数のスモール・インスタンスの比較
- 8. 複数のスレッド用の単一のHttpClientContext
- 9. インスタンスメソッドがインスタンス化スレッドとは別のスレッドで呼び出されました
- 10. VS 7.1リリースコンパイルと複数スレッド
- 11. 複数の証明書が単一のキーストアと1つのTomcatインスタンスにある
- 12. スレッドごとに複数のコンテキスト
- 13. タスクごとに複数のスレッドOpenMP
- 14. スレッドの周りに複数のインスタンスを作成すると失敗しますか? - シングルトンパターン
- 15. 複数のスレッドと単一のメインオブジェクト変数
- 16. 別のスレッドで1つのスレッドでデータを作成する
- 17. コンテナに複数のインスタンスがある場合のためにAutowiredインスタンスを作成する背後にあるロジック
- 18. アプリケーションのインスタンスごとに一意のアプリケーションデータディレクトリを作成
- 19. gdbインスタンスごとに1つのスレッドを持つことは可能ですか?
- 20. CPUコア/スレッドの数に一致する複数のスレッドを実行すると、各スレッドは別のコア/スレッド上で実行されますか?
- 21. SwingWorkerスレッド/メモリリークが複数回インスタンス化されたとき
- 22. django:UserinfoのインスタンスごとにEducationモデルのインスタンスが複数ある場合、モデルUserinfoの複数のインスタンスを取得するには
- 23. Nettyを使用するチャネルモデルごとに単一スレッドOIO
- 24. RunnableとThreadを使ったスレッドの作成の違いは?
- 25. 複数のドメインを単一のkarafインスタンスにマップする
- 26. 単一のアクセプタを持つスレッドブースト:: asioサーバのスレッドごとに複数のio_serviceが必要ですか
- 27. Javaの別のスレッドからスレッドの変数にアクセスする
- 28. GAEインスタンスあたりのスレッド数はいくつですか?
- 29. スレッドごとに1つのインスタンスを割り当てる(ブースト環境)
- 30. 単一マシン上のcelerydインスタンスごとの一意のIP?
最初のアプローチは本当に良いものではありません... – dit
@ditあなたがスレッドプールを作成している場合を除き、あなたは自分自身を書くのではなく、組み込みのものを使うべきです。 ;) –