使用するスレッドは 10 個だけです。容量を設定しているからです。
このキュー容量を 20 に設定します。
ここでは 20 個のスレッドが使用されていることがわかります。しかし、何か問題が発生しました。これについては後ほど説明します。
呼び出し可能オブジェクトを使用してみましょう。
一般に、スレッドの実行後に戻り値を取得したい場合は、future を使用できます。
スレッド プールがキューのタスクを出力しないことがわかりました。
次に、スレッド プール メソッドを追加します。
このメソッドを使用すると、キュー内のタスクを表示できます。
<=cSize のスレッドが開始され、他のタスクが作業キューに配置されます。
x-nworks > mSize の場合はどうなりますか?
mSize スレッドはタスクを実行するために実行され、残りは対応する拒否ポリシーを実行します。
もちろん、スレッド プールの拒否ポリシーをカスタマイズすることもできます。
カスタム拒否ポリシーを前のデモに追加できます。
カスタム例外の内容を出力します。
実際の作業では、ここでログの印刷や電子メールによる警告を行うことができます。
エグゼキューターフレームワーク:
では、スレッド プールを作成するこれらのさまざまな方法の違いは何でしょうか?
スレッド プールの使用に関する提案:
このようなクラスを作成します。
次に、最大ヒープ メモリを設定します。
次に、それを実行します。
例外が報告されます。
このファイルは、前に設定したパスにあります。
ここでは、ツールを使用してこの oom 例外を分析できます。
「同意する」をクリックします。
前のファイルを見つけます。
占有状況を確認することができますが、このツールの使用方法についてはここでは詳しく紹介しません。
このようなコードもメモリ オーバーフローを引き起こします。
このようなコード部分については、コードに例外があります。
submit を使用しても例外は出力されませんでした。
ここでは、execute を使用して以下を実行します。
例外が報告されます。
この場合、submit によっても例外が発生します。