Thread Pool Executor を使用して従来の設計を変更する作業を行っています。詳細は次のとおりです。
レガシー:- レガシー設計の場合、アプリケーションの起動時に 600 のスレッドが作成されます。さまざまなプールに配置され、必要に応じて取得され、対応するスレッドにタスクが割り当てられます。
New:- 新しい設計では、スレッド プールを executor サービスに置き換えました。
ThreadPoolExecutor thpool = new ThreadPoolExecutor(coreSize,poolsize,...);
私が観察しているのは、Executor の場合、起動時にスレッドが作成されないことです。クライアントからリクエストが発行されたときに作成されます。その結果、メモリ内に作成されたスレッドは、以前のものと比較してかなり少なくなっています。
しかし、スレッドの作成は呼び出し時に発生するオーバーヘッドでもあるため、それは正しい方法です。
クライアントからの呼び出し時にスレッドを作成するプロセスと、従来のアプローチに従ってメモリ内に存在するアイドル スレッドのどちらが重いか教えてください。
また、パフォーマンスに関して最良の結果を得るために、どの Executor プールを使用するかを提案します。