我有一个程序可以并行运行(全天)任务(要执行的任务中没有 I/O),所以我习惯于Executors.newFixedThreadPool(poolSize)
实现它。
最初我将其设置poolSize
为Runtime.getRuntime().availableProcessors()
,但我有点担心要使用所有可用的内核,因为在同一台 PC(32 个内核)上运行着其他进程。
特别是我有十个其他 JVM 运行相同的程序(在不同的输入数据上),所以我有点担心在可用内核之间切换线程方面可能会有很多开销,这可能会减慢整体计算速度.
我应该如何决定每个程序/JVM 的池大小?
此外,在我的 PC 中,还有其他进程一直在运行(防病毒、备份等)。我也要考虑这些吗?