如何检查进程的进度

时间:2011-02-03 11:34:51

标签: java process runtime progress-bar

我使用java开发了一个独立的应用程序,我正在使用Runtime执行外部进程。但是该过程的执行需要很长时间,我想显示它的进度监视器。

如何获取使用Java运行时执行的进程的进度?我应该使用进度条吗?

4 个答案:

答案 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)

您必须与外部流程进行通信才能获得其状态。如果外部进程没有提供有关其状态的任何信息,则无法完成您想要的任何操作。