我使用java开发了一个独立的应用程序,我正在使用Runtime执行外部进程。但是该过程的执行需要很长时间,我想显示它的进度监视器。
如何获取使用Java运行时执行的进程的进度?我应该使用进度条吗?
答案 0 :(得分:3)
为了能够“了解”流程的进度,您需要实施某些过程随着流程而变化的里程碑。您必须实现该逻辑,以便外部进程通知您的应用程序其进度。但是,这并不总是可行的(因为,首先您需要访问外部进程的代码)或者简单易行。
你可以做的是使用Marquee Progress栏,这将使动画无限期地进行:
有时你不能马上 确定长时间运行的长度 任务,或任务可能会停留在 a的完成状态相同 很久。你可以不用工作 通过投入可衡量的进步 不确定模式下的进度条。一个 不确定模式下的进度条 显示动画以指示 工作正在进行中。
您可以查看this Java教程(我从上面获得上述文本的地方)以获取更多信息。
答案 1 :(得分:1)
这只能通过读取进程的输出流(myProcess.getInputStream()和myProcess.getErrorStream())来实现,当然只有当进程在输出中显示其进度时才会这样。
有些进程只有在认为它们在交互式shell中运行时才会显示进度,所以你必须通过传递相应的环境参数来“模拟”shell(wget就是这些工具之一)。
当然,您必须手动解析进程的输出。
如果您的外部流程包括从一个命令到另一个命令的管道数据,您可以使用pv(1)命令来显示输出。
答案 2 :(得分:1)
进入核心:如果您不知道并且无法控制,衡量或预测交易的持续时间jProgressBar1.setIndeterminate(true);
答案 3 :(得分:0)
您必须与外部流程进行通信才能获得其状态。如果外部进程没有提供有关其状态的任何信息,则无法完成您想要的任何操作。