我在 Windows 7 (x64) 机器上运行 Hudson:只需使用“java -jar hudson.war”即可启动。由于某种原因,java 进程仅使用一个 CPU(共 2 个可用 CPU),尽管它正在运行多个线程。我很确定操作系统的默认行为是将多线程程序的线程分散到 CPU 上,除非另有明确说明(如果我没记错的话,使用一些 SetProcessorAffinity api)。
有没有办法告诉 java 使用多个 CPU?
答案1
通常,java.exe
会自动将线程放到不同的 CPU 上。
如果没有,则可能是因为该程序是 I/O 密集型的,而不是 CPU 密集型的,或者是因为同步导致线程无法同时运行。
看http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scaling了解更多信息。
您可能需要调试 Hudson 才能知道它为什么只使用一个处理器。