首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java ProcessBuilder不能在线程中工作

Java ProcessBuilder不能在线程中工作
EN

Stack Overflow用户
提问于 2019-07-25 16:50:46
回答 1查看 145关注 0票数 0

我正在使用Java来执行两个ProcessBuilder脚本。我希望两次执行之间有10秒的时间间隔。这就是我使用线程的原因。但是下面的代码不会执行shell脚本(没有线程,它们就会执行)。

代码语言:javascript
复制
public void execute() {

    new Thread(new Runnable() {
        public void run() {
            Process process_1;
            try {

                List<String> cmdList_1 = new ArrayList<String>();

                cmdList_1.add("sh");
                cmdList_1.add("command_1.sh");
                ProcessBuilder pb = new ProcessBuilder(cmdList_1);
                process_1 = pb.start();
                process_1.waitFor();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }).start();

    new Thread(new Runnable() {
        public void run() {
            Process process_2;
            try {
                Thread.sleep(10000);

                List<String> cmdList_2 = new ArrayList<String>();

                cmdList_2.add("sh");
                cmdList_2.add("command_2.sh");
                ProcessBuilder pb = new ProcessBuilder(cmdList_2);
                process_2 = pb.start();
                process_2.waitFor();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }).start();
}  

我如何修复我的代码?或者,有没有更好的方法来实现我的抱负?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2019-07-26 02:03:17

尝试使用该过程的输出,如下所示:

代码语言:javascript
复制
ProcessBuilder processBuilder = new ProcessBuilder();
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader((new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57197928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档