2011-02-03 87 views
1

我開發了一個獨立的應用程序使用java,其中我正在執行使用運行時的外部進程。但是這個過程的執行需要很長時間,我想顯示它的進度監視器。如何檢查進程的進程

我怎樣才能得到一個已使用的Java運行時執行的過程的進展如何?我應該使用進度條嗎?

+0

你控制外部進程的源代碼? – 2011-02-03 11:38:05

+0

@Martinho不,我不控制外部過程的代碼。 – Antrromet 2011-02-03 11:42:39

回答

3

爲了能夠「瞭解」過程的進展,你將需要實現某種里程碑的工藝變化,因爲它去一起。您必須實施該邏輯,以便外部流程將您的應用程序通知其進度。但是,這並不總是可行的(因爲首先你需要訪問外部過程的代碼)或者很簡單。

你可以做什麼,是使用選框進度條,這將讓動畫去indefinitevely:

有時候,你不能馬上 確定一個長期運行的 任務的長度,或該任務可能會長時間停留在 相同的完成狀態。通過將 進度欄置於不確定模式,可以顯示沒有 可衡量進度的工作。 A 不確定模式下的進度條 顯示動畫以指示 工作正在進行。

你可以看看this Java教程(同一個地方,從那裏我得到了上面的文字),瞭解更多信息。

0

你必須與外部程序來獲取其狀態傳送。如果外部流程沒有提供任何有關其狀態的信息,則無法達到您想要的效果。

0

這隻能通過讀取進程的輸出流(myProcess.getInputStream()和myProcess.getErrorStream())來實現,當然只有當進程在輸出中顯示其進度時纔可能。

有跡象表明,只有當他們相信他們是在一個交互式shell中運行顯示進度的過程,所以你必須通過將相應的環境參數(wget的是這些工具之一)「模仿」的殼。

當然,你必須手動解析過程的輸出。

如果外部過程包括從一個命令到另一個管道數據,則可以使用pv(1)命令,以顯示輸出。

1

要進入的核心是:如果你不知道也無法控制,測量或預測事務的持續時間使用jProgressBar1.setIndeterminate(true);