
Я запускаю Hudson на машине с Windows 7 (x64): он просто запускается с помощью 'java -jar hudson.war'. По какой-то причине процесс java использует только один процессор из 2 доступных, хотя он запускает несколько потоков. Я почти уверен, что поведение по умолчанию для ОС — распределить потоки многопоточной программы по процессорам, если явно не указано иное (используя какой-то API SetProcessorAffinity, если я правильно помню).
Есть ли способ заставить Java использовать несколько процессоров?
решение1
Обычно java.exe
потоки автоматически распределяются по разным ЦП.
Если этого не происходит, это может быть связано с тем, что программа ограничена вводом-выводом, а не процессором, или же потоки не могут работать одновременно из-за синхронизации.
Видетьhttp://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scalingдля получения более подробной информации.
Вероятно, вам придется отладить Hudson, чтобы узнать, почему он использует только один процессор.