使Java Runtime Process在后台运行
我正在编写一个Java应用程序,我需要在该应用程序的整个生命周期中在后台运行进程。
这是我所拥有的:
Runtime.getRuntime().exec("..(this works ok)..");Process p = Runtime.getRuntime().exec("..(this works ok)..");
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
因此,基本上我每个都打印出来br.readLine()
。
我不确定的事情是如何在应用程序中实现此代码,因为无论我将其放置在何处(使用Runnable),它都会阻止其他代码运行(如预期的那样)。
我用过Runnable,Thread,SwingUtilities,但没有任何效果…
任何帮助将不胜感激 :)
回答:
您可以br.readLine()
在线程中读取输入流(即)。这样,它始终在后台运行。
我们在应用程序中实现此方法的方式大致如下:
业务逻辑,即调用脚本的位置:
// Did something...InvokeScript.execute("sh blah.sh"); // Invoke the background process here. The arguments are taken in processed and executed.
// Continue doing what you were doing
InvokeScript.execute()将如下所示:
InvokeScript.execute(String args) {// Process args, convert them to command array or whatever is comfortable
Process p = Runtime.getRuntime().exec(cmdArray);
ReaderThread rt = new ReaderThread(p.getInputStream());
rt.start();
}
ReaderThread应该继续读取您开始的过程的输出,只要它持续即可。
请注意,以上只是一个伪代码。
以上是 使Java Runtime Process在后台运行 的全部内容, 来源链接: utcz.com/qa/407389.html