Java多线程程序如何能够使用多个CPU内核?
2022-09-03 01:52:19
有人可以解释一下,当JVM在Linux上只有一个进程时,Java多线程程序(例如Tomcat servlet容器)如何能够使用CPU的所有内核?有没有好的深入文章详细描述了这个主题?
编辑#1:我不是在寻找如何在Java中实现多线程程序的建议。我正在寻找JVM如何在内部设法在linux / windows上使用多个内核的解释,同时仍然是操作系统上的单个进程。
编辑#2:我设法找到的最好的解释是Hotspot(Sun / Oracle JVM)使用NPTL在Linux上实现线程作为本机线程。因此,Java中的每个线程在Linux上都是轻量级进程(本机线程)。使用命令不仅打印出进程 ID () 而且输出本机线程 ID () 的命令,它清晰可见。ps -eLf
PPID
LWP
更多细节也可以在这里找到:
编辑#3:维基百科在NPTL上有简短但不错的条目,并有一些进一步的参考 http://en.wikipedia.org/wiki/Native_POSIX_Thread_Library