Запустите процесс Java с низким приоритетом, используя Runtime.exec/ProcessBuilder.start?

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

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

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

Кто-нибудь знает, как запустить процесс с Java (если требуется, зависит от Windows), с приоритетом belownormal?

Ответ 1

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

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");