Java 如何确定硬件线程的数量

Java 如何确定硬件线程的数量,java,concurrency,parallel-processing,Java,Concurrency,Parallel Processing,什么是硬件线程。它是否总是将可用的处理器内核数量增加一倍?如何确定Intel Core2 Duo处理器中的硬件线程数?可以通过Java代码来确定吗 什么是硬件线程 你告诉我们。这不是一个固定的术语 它是否总是将可用的处理器内核数量增加一倍 啊,现在你似乎在谈论CPU内核中的部分冗余被用来“伪造”一个额外的内核 如何确定 Intel Core2 Duo中的硬件线程 处理器?能否确定 通过Java代码 您可以尝试在系统属性中查找一些内容,但它不是标准的(即,取决于JVM和操作系统) 就我个人而言,我

什么是硬件线程。它是否总是将可用的处理器内核数量增加一倍?如何确定Intel Core2 Duo处理器中的硬件线程数?可以通过Java代码来确定吗

什么是硬件线程

你告诉我们。这不是一个固定的术语

它是否总是将可用的处理器内核数量增加一倍

啊,现在你似乎在谈论CPU内核中的部分冗余被用来“伪造”一个额外的内核

如何确定 Intel Core2 Duo中的硬件线程 处理器?能否确定 通过Java代码

您可以尝试在系统属性中查找一些内容,但它不是标准的(即,取决于JVM和操作系统)


就我个人而言,我只会使用一个合理的默认值(4或8个线程-多几个线程比不使用可用的内核要好),并使其可配置。

我想你指的是CPU的数量。您可以通过以下方式获得:

int N_cpu=Runtime.getRuntime().availableProcessors()


如果您计划实现线程池,则可以使用此值确定线程池中应该存在多少线程。要了解更多关于线程池大小的信息,请参阅Java中的并发部分,第8.2节。

硬件线程的数量肯定不是内核数量的两倍——AMD处理器没有任何类型的超线程(),并且可以在BIOS中关闭超线程(就像以前的nehalem处理器一样,实际上它并没有给你带来太多的好处)。也没有理由说每个内核只需要两个硬件线程——Power7系统已经做到了


没有独立于操作系统或硬件的方法来进行这些检查。我所知道的唯一一个可以相当方便地查询这些信息的库是库。它是一个C库,所以从Java调用应该非常简单。

硬件线程是一个内核级概念,取决于您的操作系统。我很想知道iJeeves为什么想知道。他可能正在思考的问题远远超出了核心CPU的问题…?在许多同时发表的相关论文中都发现了这一点。