マルチスレッド同時プログラミング学習記9(XiaoDi Classroom) ------スレッドプールとExecutorフレームワーク

 

 

 

使用するスレッドは 10 個だけです。容量を設定しているからです。

 

このキュー容量を 20 に設定します。

 

ここでは 20 個のスレッドが使用されていることがわかります。しかし、何か問題が発生しました。これについては後ほど説明します。 

呼び出し可能オブジェクトを使用してみましょう。

 

 

一般に、スレッドの実行後に戻り値を取得したい場合は、future を使用できます。

 

スレッド プールがキューのタスクを出力しないことがわかりました。

次に、スレッド プール メソッドを追加します。

 

このメソッドを使用すると、キュー内のタスクを表示できます。

 

 

 

<=cSize のスレッドが開始され、他のタスクが作業キューに配置されます。

 x-nworks > mSize の場合はどうなりますか?

mSize スレッドはタスクを実行するために実行され、残りは対応する拒否ポリシーを実行します。

もちろん、スレッド プールの拒否ポリシーをカスタマイズすることもできます。

カスタム拒否ポリシーを前のデモに追加できます。

カスタム例外の内容を出力します。

実際の作業では、ここでログの印刷や電子メールによる警告を行うことができます。

 エグゼキューターフレームワーク:

 

 では、スレッド プールを作成するこれらのさまざまな方法の違いは何でしょうか?

 スレッド プールの使用に関する提案:

 

このようなクラスを作成します。

次に、最大ヒープ メモリを設定します。

 

 次に、それを実行します。

例外が報告されます。

 

このファイルは、前に設定したパスにあります。

 

ここでは、ツールを使用してこの oom 例外を分析できます。

 「同意する」をクリックします。

 

 

前のファイルを見つけます。

 

占有状況を確認することができますが、このツールの使用方法についてはここでは詳しく紹介しません。

このようなコードもメモリ オーバーフローを引き起こします。

 

 

このようなコード部分については、コードに例外があります。

 

submit を使用しても例外は出力されませんでした。

ここでは、execute を使用して以下を実行します。

 

 

例外が報告されます。

 

 

この場合、submit によっても例外が発生します。

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_52618349/article/details/130211410
Recomendado
Clasificación