Java 处理器内核和线程数

Java 处理器内核和线程数,java,Java,在寻找新的硬件时,我了解到i7-8750H的关键改进在于它的核心数量:我们现在看到的是6个核心和12个线程 1/Runtime.getRuntime.AvailableProcessor会返回6还是12 2/在这种情况下,对于一个简单的并行计算任务,使用12线程并行比使用6线程并行更好吗 谢谢Runtime.getRuntime.availableProcessor将返回12作为Java可用处理器的数量。Java不知道只有6个物理核,它也不在乎Java是否会根据处理器的数量做一些技巧,但这通常是

在寻找新的硬件时,我了解到i7-8750H的关键改进在于它的核心数量:我们现在看到的是6个核心和12个线程

1/Runtime.getRuntime.AvailableProcessor会返回6还是12

2/在这种情况下,对于一个简单的并行计算任务,使用12线程并行比使用6线程并行更好吗

谢谢

Runtime.getRuntime.availableProcessor将返回12作为Java可用处理器的数量。Java不知道只有6个物理核,它也不在乎Java是否会根据处理器的数量做一些技巧,但这通常是单CPU与多核的比较


了解代码是否能从提高并行性中获益的最佳方法是测试它。您当然不能仅仅根据内核的数量来计算任何性能改进。

Java运行时不知道您的系统上有多少物理内核。AvailableProcessor只返回Java虚拟机可用的处理器数量。直接从文档中引用。六个内核意味着您可以同时运行6个cpu限制的任务。如果任务没有严格的CPU限制,那么使用12个线程可能会有所帮助。具体取决于应用程序。您的示例中有12个逻辑核。逻辑核数是物理核数乘以每个物理核上可以运行的线程数。在每个核有2个线程的六核上,这将是12个逻辑核,然后是afaik。6个逻辑处理器。顺便说一句,如果你在虚拟机中运行Java,比如Docker、cloud等,JVM会报告机器的实际处理器,而不是虚拟机;因此,基本上,这是在它上面运行的所有JVM之间共享的。他们将在即将发布的Java版本中解决这个问题。不知道是哪个。JDK10?