使用Runtime.exec / ProcessBuilder.start以低优先级启动Java进程?

我正在尝试使用ProcessBuilder类通过Java启动一个外部过程,而这一点很有效。 目前使用该命令运行:

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

我想要做的就是这一点,但是要以低优先级开始这个过程。 我的程序目前只在Windows上运行,所以窗口特定的解决scheme对我来说很好。 一些研究表明我使用“开始”命令,但是当我从Java尝试这样做时,会发出一个exception,表示这是一个无法识别的命令(与cmd.exe相同的命令)。

有谁知道如何从Java启动一个进程(如果需要的话,Windows特定的),还有什么belownormal级呢?

使用启动命令 。 这是依赖于窗口,但做你需要的。 我已经读过 ,没有跨平台的方式。

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