これに対する正しい答えは、プールされたオブジェクトのタイプとワークロードに依存すると確信しているので、実装について少し詳しく説明します。
長時間実行されるコマンドラインプロセスをプールするために使用されるObjectPoolがあります。これらのプロセスはstdin/stdoutを介して通信し、ファイル/ネットワーク操作を実行します。多くのタスクは他のタスクよりもはるかに速く完了し、プロセスをプールにすばやく戻すことができます。プールへのすべてのアクセスはスレッドセーフである必要があります。
私の質問は、LIFO/スタックまたはFIFO/ ConcurrentLinkedQueueでプールを管理する方が良いですか?両側の私の推論:
- スタックは、リソースがキャッシュされたままになる可能性がある「ホット」オブジェクトを再生し続けます。長いため。
- FIFOは、プロセス間で呼び出しのバランスを取り、各プロセスの作業量を減らします。ありがとう!