2013-12-04 3 views
5

Есть ли способ закодировать приложение Java для использования только двух ядер ЦП процессора. Например, я хочу установить ограничение на использование ЦП. Возможно ли это на Java?Использовать только 2 ядра процессора с Java

+0

Если вы делаете это самостоятельно, в окнах вы можете щелкнуть правой кнопкой мыши по программе в диспетчере задач (например, jre), выбрать «установить сродство», и вы можете выбрать, в каких ядрах запускается программа. – Jems

+1

http://stackoverflow.com/questions/10487840/java-limiting-resource-usage –

+0

Какую операционную систему вы используете? Вы можете установить близость процессора к JVM точно так же, как и для любого другого процесса. – Joni

ответ

1

Вы не можете контролировать это напрямую. Но если вы ограничиваете количество потоков, используемых для двух, оно всегда будет использовать только до двух ядер.

Но обратите внимание, что

а) фактические Жилы, используемые могут отличаться, так как планировщик может перемещать темы из одного ядра к другому

б) могут быть и другие темы в JVM (например, для мусора сбор), что вы, возможно, не ожидаете, просто глядя на свое приложение.

+0

Как бы вы ограничили число потоков до двух, если сам JVM может использовать, скажем, десять внутренних потоков? – NPE

+0

Вы не можете ограничить темы и убедиться, что они будут выполняться на отдельных ядрах. –

+0

@Vash правда, но это не было задано в исходном вопросе –

1

Вы не можете назначать Threads для ядер, поэтому вы не можете этого сделать.

Что вы можете сделать, это использовать JNI для выполнения такой задачи или использовать механизм приоритета для Threads.

3

Если вы используете пул потоков и ограничить количество потоков до 2, не более, чем 2 ядра не могут быть использованы одновременно. Однако это плохой способ ограничения использования ЦП и может быть даже невозможен в вашем сценарии (это зависит от того, сколько одновременных задач должно выполняться вашим приложением).

+0

Будет ли это иметь место в Java 8, а некоторый код использует параллельные потоки? – km1

Смежные вопросы