Кроссплатформенный способ изменить приоритет процесса Java - PullRequest
8 голосов
/ 19 мая 2010

Мне нужно вызвать файл .jar в отдельной JVM из другого java-приложения, и он очень загружает процессор, поэтому он должен работать с фоновым приоритетом, чтобы не влиять на остальную систему. Есть ли кроссплатформенный метод для этого?

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

Простой ответ заключается в том, что не существует переносимого способа изменить приоритет процесса в Java. (Темы - да, процессы - нет.)

Если вашему Java-приложению нужно запустить новую JVM для запуска приложения, интенсивно использующего процессор, то есть вероятность, что оно уже не полностью переносимо. Например, вам обычно нужно указать путь к команде java (или эквивалентный), аргумент -cp (или эквивалентный), специфичные для системы параметры JVM и т. Д.

Таким образом, предполагая, что команда для запуска JVM является уже непереносимой, вряд ли должно иметь значение, если вы замените команду сценарием-оберткой, который выполняет специфичные для ОС вещи, чтобы изменить приоритет запущенный процесс. (Например, для UNIX или Linux вы можете просто использовать nice для запуска JVM.)

1 голос
/ 19 мая 2010

Я не знаю, как установить приоритет для внешнего процесса. Thread, однако, имеет метод setPriority, поэтому, если вы управляете целевым приложением, вы, возможно, можете добавить переключатель, сообщающий приложению, что он устанавливает собственный приоритет на минимум:

theThread.setPriority(Thread.MIN_PRIORITY);

Если это все еще влияет на систему, я предлагаю вам перемежать некоторые короткие sleep, чтобы разгрузить процессор.


Другой вариант:

Если вы поместите цель .jar в путь к классу «инициирующего» приложения, вы можете просто вызвать main -метод jar-файла во вновь созданном потоке, а затем установить приоритет с помощью приведенного выше метод. (Это должно работать, даже если вы не контролируете исходный код целевого файла JAR.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...