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

标签 java windows processbuilder windows-task-scheduler

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

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

我想做的就是这个,但是以低优先级启动进程。我的程序目前仅在 Windows 上运行,因此我可以使用特定于窗口的解决方案。一些研究建议我使用“开始”命令,但是当我尝试从 Java 执行此操作时,它给出了一个异常,指出它是一个无法识别的命令(相同的命令适用于 cmd.exe)。

有谁知道如何从 Java(如果需要,特定于 Windows)以 belownormal 优先级启动进程?

最佳答案

使用start command .它依赖于 Windows,但可以满足您的需求。我 have read没有跨平台的方式。

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

关于java - 使用 Runtime.exec/ProcessBuilder.start 以低优先级启动 Java 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223765/

相关文章:

java - 使用 radix-26 将名称转换为 key

windows - 在 Windows 上运行 perl 脚本

c++ - GLFW3 错误 : 'glfwGetWin32Window' was not declared in this scope

java - 由ProcessBuilder创建的进程不会终止

java - 从命令行更新Android Studio

java - java中的for循环

java - 在不使用read()的情况下,socket.getInputStream().read()可以读取keep send后的所有数据吗?

xcode - Git diff 存在于 Windows 上的符号链接(symbolic link)上,但不存在于 FAT 文件系统上的 Mac 上

java - 与 Java 中的 ProcessBuilder 的混淆

java - 如何在 Java 中以 root 身份执行 shell 命令