天天看點

Java Runtime Process狀态判斷

有個如下類似的應用,使用Runtime call一個指令行來啟動一個Apache伺服器,在“确定伺服器啟動後”打開一個TestPage.html測試。

問題就是Runtime調用指令預設情況下很快就傳回了,接下來打開的測試頁面就會提示連接配接不到伺服器。要保證打開浏覽器的時候伺服器已經正确能用了。

Process process = Runtime.getRuntime().exec(shell);
           

代碼能夠傳回一個Process,有個方法waitFor()可以阻塞并等待Process傳回。其DOC如下:

[i]causes the current thread to wait, if necessary, until the process represented by this Process object has terminated.[/i]

但是這個waitFor()方法在我的應用裡面會導緻永遠阻塞,因為Process是為了啟動一個Server,一當啟動,這個Server就一直Running了,而Process就的waitFor()就隻能一直阻塞了。

是以必須有另外的方法來判斷,而不能僅依靠Process本身提供的狀态和方法。

一個比較笨的方法,代碼如下:

一個接口:

-------

關鍵問題就是無法通過Process對象本身來決定執行狀态。是以有類似的輔助判斷方法:

-----

其他方法?