Tom*_*icz 17 java multithreading jvm
有人可以解释一下,当JVM只是Linux上的单个进程时,Java多线程程序(例如Tomcat servlet容器)能够使用CPU的所有内核吗?是否有任何好的深入文章详细描述了这个主题?
编辑#1:我不是在寻找如何在Java中实现多线程程序的建议.我正在寻找JVM内部如何在linux/windows上使用多个内核同时仍然是操作系统上的单个进程的解释.
编辑#2:我设法找到的最佳解释是Hotspot(Sun/Oracle JVM)使用NPTL在Linux上将线程实现为本机线程.因此,Java中的每个线程都是Linux上的轻量级进程(本机线程).使用ps -eLf命令可以清楚地看到打印输出不仅处理id(PPID)而且还处理本机线程id(LWP).
更多细节也可以在这里找到:
编辑#3:维基百科在NPTL上有简短但很好的条目,还有一些参考文献http://en.wikipedia.org/wiki/Native_POSIX_Thread_Library
Joa*_*uer 11
Linux内核支持线程作为一等公民.事实上,对于内核,线程与进程没有太大的不同,除了它与另一个线程/进程共享一个地址空间.
ps默认情况下,某些旧版本甚至为每个线程显示一个单独的进程,较新的版本可以使用该-m标志启用此行为.
| 归档时间: |
|
| 查看次数: |
13599 次 |
| 最近记录: |