Запустить процесс Java с низким приоритетом, используя Runtime.exec / ProcessBuilder.start? - PullRequest
13 голосов
/ 03 июня 2011

Я пытаюсь запустить внешний процесс через Java, используя класс ProcessBuilder, и это очень хорошо работает.В настоящее время выполняется с помощью команды:

new ProcessBuilder("java", "-jar", jarfile, args);

Я бы хотел сделать только это, но начать процесс с низким приоритетом.Моя программа в настоящее время работает только в Windows, поэтому решение для конкретного окна мне подходит.Некоторые исследования предполагают, что я использую команду «start», но когда я пытаюсь сделать это из Java, это дает исключение, говоря, что это нераспознанная команда (та же команда работает с cmd.exe).запустить процесс из Java (если необходимо, для Windows) с приоритетом belownormal?

1 Ответ

16 голосов
/ 03 июня 2011

Использовать команда пуска .Это зависит от окон, но делает то, что вам нужно.Я прочитал для этого нет кроссплатформенного способа.

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal javaws -version");
System.out.println("Before start");
Process start = pb.start();

Можно даже прочитать потоки ошибок конца ввода.

Ожидать:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.waitFor();
System.out.println("Done");

Для преждевременного уничтожения:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.destroy();
start.waitFor();

System.out.println("Done");
...