我有一个处理大量XML文件的Java程序。这个过程需要几个小时才能运行,有时我需要停下来。现在我使用 CTRL-C 来杀死它,记下它正在处理的文件,然后我删除这些文件的数据并重新处理它们。
有没有办法让Java在命令行上等待用户输入时继续工作,而且我可以让它在监听时继续输出日志信息到命令提示符吗?
我考虑让它在文件之间等待用户输入几秒钟,但这会增加整个处理的时间,而且我不确定是否有办法轻松超时用户输入。
答案 0 :(得分:1)
您有兴趣为XML处理器生成另一个线程来运行。查看java.util.concurrent
库。
您的主线程可以处理用户输入,而另一个线程可以向控制台报告。处理两者之间的任何并发问题可能很困难,建议尽量避免在两者之间进行通信以避免头痛。
您最终会添加类似
的代码Thread xmlProcessorThread = new Thread(yourRunnableXMLProcessor);
xmlProcessorThread.run();
将runnable
接口添加到XML处理器(因此名称为yourRunnableXMLProcessor
)
答案 1 :(得分:0)
在命令行应用程序中启动一个实际执行处理文件工作的新线程。处理线程可以在每个文件之后检查内部标志并确定是否继续。主应用程序线程将继续侦听命令行输入,并可以根据接收输入的时间设置标志的值。