como faço para que o java.exe use várias CPUs?

como faço para que o java.exe use várias CPUs?

Estou executando o Hudson em uma máquina Windows 7 (x64): isso é simplesmente iniciado usando 'java -jar hudson.war'. Por alguma razão, o processo java usa apenas uma CPU, das 2 disponíveis, embora esteja executando vários threads. Tenho certeza de que o comportamento padrão do sistema operacional é espalhar os threads de um programa multithread pelas CPUs, a menos que seja explicitamente informado o contrário (usando alguma API SetProcessorAffinity, se bem me lembro).

Existe uma maneira de dizer ao Java para usar várias CPUs?

Responder1

Normalmente, java.execolocará threads automaticamente em CPUs diferentes.

Caso contrário, pode ser porque o programa está vinculado à E/S, em vez de vinculado à CPU, ou porque os threads não podem ser executados simultaneamente devido à sincronização.

Verhttp://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scalingpara mais algumas informações.

Você provavelmente terá que depurar o Hudson para saber por que ele usa apenas um processador.

informação relacionada