私は(終日)タスクを並行して実行する(実行するタスクにI / Oがない)プログラムを持っているので、それExecutors.newFixedThreadPool(poolSize)
を実装するために使用しました。
最初は を に設定しpoolSize
ましRuntime.getRuntime().availableProcessors()
たが、同じ PC (32 コア) で他のプロセスが実行されているため、利用可能なすべてのコアを使用するのが少し心配でした。
特に、同じプログラムを (異なる入力データで) 実行している他の 10 個の JVM があるため、使用可能なコア間でスレッドを切り替えるという点で多くのオーバーヘッドが発生し、全体的な計算が遅くなる可能性があるのではないかと少し心配しています。 .
各プログラム/JVM のプールのサイズはどのように決定すればよいですか?
また、私の PC では、他のプロセス (ウイルス対策、バックアップなど) が常に実行されています。これらも考慮に入れましょうか。