簡體   English   中英

Java ProcessBuilder在線程中不起作用

[英]Java ProcessBuilder doesn't work within a Thread

我正在使用Java ProcessBuilder執行兩個Shell腳本。 我希望兩次執行之間有10秒的時間間隔。 這就是為什么我使用線程。 但是下面的代碼不能執行shell腳本(沒有線程就可以執行)。

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();
}  

如何修復我的代碼? 還是有更好的方法來實現我的抱負?

提前致謝

嘗試使用流程的輸出,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM