在命令行Java程序工作时将命令发送到命令行

时间:2012-11-28 22:45:08

标签: java command-line user-input

我有一个处理大量XML文件的Java程序。这个过程需要几个小时才能运行,有时我需要停下来。现在我使用 CTRL-C 来杀死它,记下它正在处理的文件,然后我删除这些文件的数据并重新处理它们。

有没有办法让Java在命令行上等待用户输入时继续工作,而且我可以让它在监听时继续输出日志信息到命令提示符吗?

我考虑让它在文件之间等待用户输入几秒钟,但这会增加整个处理的时间,而且我不确定是否有办法轻松超时用户输入。

2 个答案:

答案 0 :(得分:1)

您有兴趣为XML处理器生成另一个线程来运行。查看java.util.concurrent库。

您的主线程可以处理用户输入,而另一个线程可以向控制台报告。处理两者之间的任何并发问题可能很困难,建议尽量避免在两者之间进行通信以避免头痛。

您最终会添加类似

的代码
Thread xmlProcessorThread = new Thread(yourRunnableXMLProcessor);
xmlProcessorThread.run();

runnable接口添加到XML处理器(因此名称为yourRunnableXMLProcessor

答案 1 :(得分:0)

在命令行应用程序中启动一个实际执行处理文件工作的新线程。处理线程可以在每个文件之后检查内部标志并确定是否继续。主应用程序线程将继续侦听命令行输入,并可以根据接收输入的时间设置标志的值。