相关疑难解决方法(0)

异步运行进程并从stdout和stderr读取

我有一些代码运行一个进程,并从stdout和stderr异步读取,然后在进程完成时进行处理.它看起来像这样:

Process process = builder.start();

    Thread outThread = new Thread(() -> {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
            // Read stream here
        } catch (Exception e) {
        }
    });

    Thread errThread = new Thread(() -> {
      try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
        // Read stream here
      } catch (Exception e) {
      }
    });

    outThread.start();
    errThread.start();

    new Thread(() -> {
      int exitCode = -1;
      try {
        exitCode = process.waitFor();
        outThread.join();
        errThread.join();
      } catch (Exception e) {
      } …
Run Code Online (Sandbox Code Playgroud)

java multithreading

12
推荐指数
1
解决办法
5416
查看次数

标签 统计

java ×1

multithreading ×1