硬件线程是什么意思。是否总是可用处理器核心数量的两倍?如何确定Intel Core2 Duo处理器中的硬件线程数?可以通过Java代码确定吗?
答案 0 :(得分:6)
你告诉我们。这不是一个确定的术语。硬件线程是什么意思。
它总是可用处理器核心数量的两倍吗?
啊,现在好像你在谈论hyperthreading,其中CPU内核中的部分冗余被用来“伪造”一个额外的核心。
如何确定数量 Intel Core2 Duo中的硬件线程 处理器?可以确定吗? 通过Java代码?
你可以尝试在系统属性中找到一些东西,但它不是标准的(即依赖于JVM和OS)。
就个人而言,我只是使用一个合理的默认值(4或8个线程 - 有一些太多不适合不使用可用内核)并使其可配置。
答案 1 :(得分:3)
绝对不是硬件线程数是内核数量的两倍--AMD处理器没有任何类型的超线程(yet),并且可以在BIOS中关闭超线程(通常是前nehalem处理器,因为它在实践中并没有给你带来太大的收获)。也没有理由为每个核心必须只有两个硬件线程 - Power7系统有4 per core。
没有与操作系统或硬件无关的方法来进行这些检查。我所知道的唯一可以查询此信息的库是hardware locality (hwloc)库。它是一个C库,因此从Java调用应该非常简单。
答案 2 :(得分:1)
我想你的意思是CPU的数量。你可以通过以下方式获得:
int N_CPUS = Runtime.getRuntime()。availableProcessors();
如果您计划实现它,则可以使用此值确定线程池中应存在多少个线程。要阅读有关线程池大小的更多信息,可以使用Java in Concurrency,第8.2节。