使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

回到顶部