java程序设置线程池参数时,会参考cpu核数。 在配置线程池的核心线程数时,我们应该使用CPU的物理核心数还是逻辑核心数呢? 另外,我还想知道docker或者vmware等容器技术显示的CPU核心数,是逻辑核心数还是物理核心数? 对于支持超线程的CPU,这两个值是不同的。
好消息:在 Java 21+ 中,虚拟线程的使用意味着您不必进行核心计算。
虚拟线程是由 JVM 而不是主机操作系统管理的线程。它们比传统的“平台”线程便宜得多。您可以合理地运行一百万个虚拟线程。
如果您的任务存在一些阻塞,即它们不完全受 CPU 限制,那么虚拟线程通常是最佳选择。