ハードウェア、メモリやパフォーマンスによって制限され、私たちはいずれかのスレッドを無制限に作成することはできません、各マシンの最大許容スレッドは、有界値です。したがって、スレッドThreadPoolExecutor管理の数が制限されます。スレッドプールは、提出されたタスクを実行するために、これらのスレッドの限られた数を使用することです。しかし、マルチユーザ、非常に同時実行アプリケーションのために、提出されたタスクの非常に大きな数は、はるかにスレッドの最大許容数よりもなります。この問題を解決するためには、キューイングメカニズムを導入する必要がある、またはメモリ内、または大規模な記憶媒体にハードディスクの容量。JavaのThreadPoolExecutorのみサポートタスクは、タスクを実行するために、まだ持っていた時間をステージングすることにより、メモリ、BlockingQueueのにキューイング。
スレッド管理がより複雑で、これは、スレッド、待機/ウェイク、同期/ロック、スレッドの作成と死の問題の数を含むことになります。
スレッドプール内のスレッドの作成と破棄のための7つのパラメータのThreadPoolExecutor、共同責任
- int型corePoolSize
- int型maximumPoolSize
- 長いkeepAliveTimeが
- TimeUnitでユニット
- BlockingQueueのワークキュー
- threadFactory threadFactory
- RejectedExecutionHandlerハンドラ
参照
9:スレッドプールの実装、ソースコード一般的に用いられる方法