我有一个运行一些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。有没有办法强制执行这些方法调用的顺序执行?