2013-10-30 78 views
0

我使用Java中的Process類來啓動多個bash腳本進程。
如果應該監聽進程打印到標準輸出的所有輸出,我該如何構建我的程序。 解決方案不應該強調CPU。 我應該使用輪詢所有進程還是使用每個進程的線程並讀取InputStream並將其轉發到演示線程。從Java中的多個進程讀取

回答

0

Process類包含以下方法:getOutputStream()getInputStream()getErrorStream(),使用這些你可以重定向你的輸出到標準輸出

+0

我知道如何做到這一點,它更多有關架構的問題。每個進程的一個線程讀取OutputInputStream或輪詢一個線程中的OutputStreams。目前我已經實現了輪詢方法,但它的CPU消耗很高。 –

+0

好吧,很好,你使用一個游泳池。爲了減少消耗,SDK建議:「*返回____流被緩衝*」是一個好主意。另一個技巧 - 嘗試使用BufferedReader#readLine - 因此控制檯輸出不會立即打印,而是緊跟在'\ n'符號之後。如果沒有'\ n',請不要忘記清空最後一行 – Dewfy