Java代码似乎没有按顺序执行

时间:2017-07-10 12:32:17

标签: java swing concurrency

我有一个运行一些Python脚本和Linux应用程序的Java GUI应用程序。代码看起来基本上是这样的(由于策略而无法发布实际来源):

private void runScript(ArrayList<String> aList)
{
    tA.append("Starting Process...");
    ProcessBuilder pb = new ProcessBuilder(aList);
    pb.redirectErrorStream(true);
    pb.redirectOutput();
    Process p = pb.start();
    tA.append("Process complete.");
}

其中tA是主GUI中的JTextArea,而runScript是GUI类的方法。我遇到的问题是tA.append("Starting Process...");似乎无法在pb.start();之前运行 - 在完成流程执行之前,JTextArea中不会显示任何内容。我尝试在第一个Thread.sleep(100)之后抛出一个tA.append(),但这似乎不起作用。我也试过这个:

...
{
    syncrhonized(this)
    {
        tA.append("Starting Process...");
        <rest of code>
    }
}

但在进程运行之前,它似乎仍然没有填充JTextArea。有没有办法强制执行这些方法调用的顺序执行?

0 个答案:

没有答案