java.exe가 여러 CPU를 사용하도록 하려면 어떻게 해야 합니까?

java.exe가 여러 CPU를 사용하도록 하려면 어떻게 해야 합니까?

저는 Windows 7(x64) 시스템에서 Hudson을 실행하고 있습니다. 이는 'java -jar hudson.war'을 사용하여 간단히 시작됩니다. 어떤 이유로 인해 Java 프로세스는 여러 스레드를 실행하고 있음에도 불구하고 사용 가능한 CPU 중 하나만 사용합니다. 나는 달리 명시적으로 말하지 않는 한(올바르게 기억한다면 일부 SetProcessorAffinity API를 사용하여) OS의 기본 동작은 다중 스레드 프로그램의 스레드를 CPU에 분산시키는 것이라고 확신합니다.

Java에 여러 CPU를 사용하도록 지시하는 방법이 있습니까?

답변1

일반적으로 java.exe스레드는 자동으로 다른 CPU에 배치됩니다.

그렇지 않은 경우 프로그램이 CPU 바인딩이 아닌 I/O 바인딩되거나 동기화로 인해 스레드가 동시에 실행될 수 없기 때문일 수 있습니다.

보다http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scaling더 많은 정보를 원하시면.

Hudson이 하나의 프로세서만 사용하는 이유를 알려면 아마도 Hudson을 디버깅해야 할 것입니다.

관련 정보