有多少个线程并发执行?

有多少个线程并发执行?

输出来自WMIC

C:\Users\fra>WMIC CPU Get DeviceID,NumberOfCores,NumberOfLogicalProcessors
DeviceID  NumberOfCores  NumberOfLogicalProcessors
CPU0      4              8

C:\Users\fra>

它告诉我我有 4 个核心和 8 个处理器。就开发 Java 应用程序而言,有多少个并发线程有效执行?如果我启动 32 个长时间运行的任务线程,它们都会并发执行吗?

处理器是:

Intel i7-4800MQ CPU @2.70GHz

答案1

简短的回答是:也许吧。

每个核心一次不能做多于一件事的工作,每个时钟周期也不能做多于一件事的工作。但是,操作系统可以为每个核心安排多个进程的工作,每个单位大于一个时钟周期。这是看待超线程的简单方法。

如果应用程序的等待时间较长,那么 32 个线程可以轻松加载到内存中并同时运行,对性能几乎没有影响,我认为这才是真正的问题所在。如果创建了 32 个计算密集型线程,较长的工作周期与较短的等待周期将使同时工作的假象消失。

真的,如果您的目标是 32 个线程,那么希望您有理由选择这个数字,并且它在以后的道路上是动态的。一个处理器可能可以很好地处理 32 个线程,另一个处理器可能会卡住,并且在 5-10 年后,32 个线程可能少于每个物理核心一个线程。无论如何,最好使用 4、8、16 和 32 个线程测试应用程序,看看哪个线程在您的应用程序上完成工作最快,以查看工作负载是否可以很好地扩展到 32 个线程的目标。

相关内容