2014-03-12 32 views
0

內部Java程序我運行以下?如何來getRuntime.exec()出來時,執行過程需要很長的時間來執行?

Process p = Runtime.getRuntime().exec("java -cp - src\ MyCode"); 
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream)); 

程序MyCode是一個java程序。

現在,MyCode可以進入如infinite looplong execution cycle的情況。目前,在這種情況下,過程p正在MyCode上「永遠」等待。我需要的是,每當mycode的執行超過一定的時間,我想進程p結束或者被摧毀,讓我可以在主程序的下一行繼續。

任何幫助表示讚賞!

+0

您是否嘗試http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#destroy()? – DmitryKanunnikoff

+0

我熟悉過程的方法。但是,我不知道如何編寫調用destroy()方法的超時邏輯。 – kajarigd

+0

看看我對這個問題的回答。 – DmitryKanunnikoff

回答

0

我電子書籍您使用ScheduledExecutorService

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3); 

然後你就可以定義StopProcess類:

class StopProcess implements Runnable { 
    @Override 
    public void run() { 
     // do some needed work 
    } 
} 

然後你可以這樣做:

scheduler.schedule(new StopProcess(), 5, TimeUnit.SECONDS); 
相關問題