私は自分のAndroid Bluetoothアプリケーションにホストとクライアントを持っています。問題は、複数の接続を作成しているため、各接続を処理するためのスレッドが必要です。それはすべてミルククッキーだから、すべてのスレッドを配列に張っておくと思った。少しの研究では、スレッドプールを使用するより良い方法があると言われていますが、私はそれがどのように機能するかについて頭を悩ますことはできません。また、実際に配列内にスレッドを保持することも可能ですか?複数のBluetoothハンドリングスレッドを管理するAndroidスレッドプール?
答えて
スレッドプールは、何度も何度もスレッドを作成するのは時間がかかるため、可能な限りリサイクルするようにしなければなりません。したがって、スレッドプールはジョブを実行するスレッドの集合ですが、ジョブが終了すると破棄されるのではなく、プールに戻って別のジョブを実行するか、何もしなければアイドル状態になります。
通常、基本的な実装は、プログラマがジョブを投入し、実装によって管理されるスレッドの束がポーリングを維持する(私は忙しく回転しているとは必ずしも言いません)。スレッド
- :スレッドプールがあってもよい
ExecutorService
クラスによって表されるJavaでは - 単一 - スレッドプールのスレッドが目に、(すなわちが再利用される)上記のように動作するので、その単一スレッド
注とプール固定スレッド・プールの場合、I/O操作をブロックするジョブは、ジョブを終了するまで効果的にプールから除去されるため、デッドロックが発生する可能性があるため、推奨されません。スレッドの配列については
、それは任意のオブジェクトの配列を作成するのと同じくらい簡単です:
Thread[] threads = new Thread[10]; // array of 10 threads
あなたの答えをありがとう、私はおそらくキャッシュされたスレッドプールを使用しているでしょう。また、私のスレッドはすべて常時稼働しており、それぞれにブロッキングコールがありますが、スレッドプールを使用する必要があると思いますか? – Zizo47
利用可能なスレッドがなくなると新しいスレッドが作成されるため、キャッシュされたスレッドプールを引き続き使用できます。通常のスレッドに関しては、管理が容易であるという利点があります。 – Tudor
「通常のスレッド」とはどういう意味ですか?スレッドプールは配列のようにスレッドを格納するだけではありませんか?または、スレッドプール自体がスレッドですか? – Zizo47
- 1. Android用AndEngineの複数のシーン/スクリーンを管理する方法
- 2. 複数のgitバージョン管理リポジトリを管理する方法は?
- 3. Javaのスレッドプールのキュー/ワーカーを管理する
- 4. データベースキューに対してスレッドプールを管理する最善の方法
- 5. Java - スレッドプールのサイズを管理する(主に増加)
- 6. tkinter - 複数のタグを管理する
- 7. 複数のUItextFieldsを管理する
- 8. 複数のリポジトリを管理するMercurial
- 9. KnockoutJS - 複数のトリガーを管理する
- 10. 複数のAPkバージョンを管理する
- 11. 複数のデータベースの管理
- 12. Android Bluetooth複数接続の問題?
- 13. 複数のdjango管理インスタンス
- 14. ドメイン管理(複数のサーバー)
- 15. 複数のDLLリソース管理
- 16. 複数のデータベース管理
- 17. 管理する複数の群れクラスター
- 18. 複数のモニタで複数のウィンドウを管理する
- 19. 複数のマシン、複数のgitリビジョン管理用のユーザの管理方法
- 20. アプリケーションサーバー(Glassfish)によって管理されるスレッドプールの使用
- 21. 複数のBluetoothペアリングリクエストダイアログを一度に処理する
- 22. 複数フレーム管理アプリケーション
- 23. シングルトンメモリ管理(複数クラス)
- 24. 複数のAndroid VMをBluetoothで接続する
- 25. 複数の.NETプロジェクトで共通DLLのバージョン管理を管理する方法
- 26. シグナルの複数のブラウザタブを管理
- 27. 複数のバッファ管理をCで
- 28. スレッドはスレッドプールによって管理されていますか?
- 29. Android - ペアリングせずに複数のBluetoothデバイスに接続する
- 30. 複数のWindowsでのプロパティの管理
あなたは、配列または 'List'に' Thread'sを置くことができます。それらは単なるオブジェクトです。 – Gray