exec 使用过 发生过一些不明白的阻塞,,查了好久,用的是另外起线程去处理基本不会被阻塞(还是会有阻塞的情况,似乎是调用的程序问题。从必现到偶发了)
```java
public static Boolean exec(String... args) throws IOException, InterruptedException {
Process exec = Runtime.getRuntime().exec(args);
new Thread(new Runnable() {
@
SneakyThrows @
Override public void run() {
String line;
BufferedReader error = new BufferedReader(new InputStreamReader(exec.getErrorStream()));
while ((line = error.readLine()) != null) {
log.error(line);
}
error.close();
}
}).start();
new Thread(new Runnable() {
@
SneakyThrows @
Override public void run() {
BufferedReader input = new BufferedReader(new InputStreamReader(exec.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
log.info(line);
}
input.close();
}
}).start();
new Thread(new Runnable() {
@
Override public void run() {
OutputStream outputStream = exec.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.println();
printWriter.flush();
printWriter.close();
}
});
exec.waitFor();
exec.destroy();
return true;
}
```