2011-01-17 20 views
2

私はJavaで記述できるCPU集中型アプリケーションを持っています。アプリケーションは、独立して実行されるいくつかのジョブ(スレッド)で構成されます。最大でn個のJavaスレッドを実行しています

すべてのスレッドを一度に開始すると、システムが過負荷になります。一度にn個のスレッドをどのようにして起動できますか?そして、あるスレッドが終了したら、新しいスレッドが開始されますか?一度に実行されるスレッドの数を制限することによって、私は他のプロセッサ/コアを他のタスクのために利用できるようにするつもりです。

ありがとうございました

答えて

15

あなたはRunnable秒またはCallable sとあなたのスレッドのタスクを策定し、その後固定スレッドプールエグゼキュータに提出しなければなりません。エグゼキュータはワーカースレッドのプールを管理し、それらのスレッドの内部キューからタスクを実行します。

必要なエグゼキュータのタイプを作成するファクトリメソッドについては、Executors#newFixedThreadPoolを参照してください。

7

固定サイズのエクゼキュータプールを使用してください。

ExecutorService executor = Executors.newFixedThreadPool(4); 
+0

ありがとうございました。 http://programmingexamples.wikidot.com/executorserviceリソースは明確な例を示しています。 – lmsasu

関連する問題