ThreadPoolexecutor をレガシー Thread に置き換えて使用しています。
以下のようにエグゼキュータを作成しました。
pool = new ThreadPoolExecutor(coreSize, size, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(coreSize),
new CustomThreadFactory(name),
new CustomRejectionExecutionHandler());
pool.prestartAllCoreThreads();
ここで、コア サイズは maxpoolsize/5 です。アプリケーションの起動時に、約 160 スレッドのすべてのコア スレッドを事前に開始しました。
従来の設計では、約 670 のスレッドを作成して開始していました。
しかし要点は、Executor を使用し、レガシー設計を作成して置き換えた後でも、それほど良い結果が得られないということです。
結果のメモリ管理では、top コマンドを使用してメモリ使用量を確認しています。時間については、使用状況を確認するために System.currentTime のロガーをミリ単位で配置しました。
このデザインを最適化する方法を教えてください。ありがとう。