ProcessBuilder()需要一些时间来完成吗?



ProcessBuilder()需要一些时间来完成吗?例如,某些key已经为您正在使用的操作系统定义。有没有可能在第二行执行时,前面的步骤还没有完成?(第二行将使用old key)

new ProcessBuilder().command("cmd.exe", "/c", "setx key abcd").start();
util.encode(); // it uses a `key` defined in previous line

这肯定需要一些时间(无论您的命令花费多少时间)。start方法返回一个Process,您可以等待它:

var process = ProcessBuilder().command("cmd.exe", "/c", "setx key abcd").start();
try {
process.waitFor();
} catch(InterruptedException e) {
// Handle exception
}
util.encode();

编辑:另外,它不清楚这将工作的方式,你认为它将。您创建的系统环境变量可能不会为旧的/正在运行的进程(例如您自己的进程)设置;很可能它只适用于新的。你很快就会注意到,但如果它即使等待也不起作用,那可能就是原因。

最新更新