我有一个 Java-Gnome GUI,它启动一个单独的线程来运行我没有代码的命令行程序。我想在 GUI 中显示一个进度条,以显示到目前为止第二个线程已完成的百分比。
鉴于我/我的程序不控制外部程序,这是否可能,或者我是否卡在不确定的脉冲进度条中?谢谢
最佳答案
当命令行程序在控制台中报告其进度时,您可以在 Java 应用程序中读取此输出。为此,您必须创建一个 Process使用 ProcessBuilder 的对象:
ProcessBuilder processBuilder = new ProcessBuilder("yourCommandLineProgram");
Process process = processBuilder.start();
OutputStream outputStream = process.getOutputStream();
现在你可以读取outputStream
对象来获取命令行程序的文本输出。
这当然只会在命令行程序向 stdout 报告其进度以及此输出可用于确定剩余工作量时对您有所帮助。当程序不暴露这些信息时,就没有办法知道它的进度(事实上,根据 halting problem ,如果不完全执行一个程序是不可能知道它会运行多长时间的)。
关于java - 是否可以跟踪控制外部程序的线程的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13879308/